ねこじゃすり
猫を魅了する魔法の装備品!
[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット
防水暴風で耐久性抜群なので旅行で大活躍です!
ペヤング ソースやきそば 120g×18個
とりあえず保存食として買っておけば間違いなし!
レッドブル エナジードリンク 250ml×24本
翼を授けよう!
モンスターエナジー 355ml×24本 [エナジードリンク]
脳を活性化させるにはこれ!
ドラゴンクエスト メタリックモンスターズギャラリー メタルキング
みんな大好き経験値の塊をデスクに常備しておこう!
BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール
もう一人の僕を呼び覚ませ!!
スポンサーリンク
TypeScriptでコンパイルエラー
TypeScriptを利用して、Form
のファイル選択時にサムネイルを出そうと思い、以下のようなコーディングをした際にTypeScriptのエラーが発生しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<template lang="pug"> ... (略) ... </template> <script lang="ts"> ... (略) ... export default class App extends Vue { private imageData: string = ""; ... (略) ... fileChange(event) { let selectFile = event.target.files[0] let path = this.file; let reader = new FileReader() reader.onload = (e) => { let result = e.target.result this.imageData = result // エラー }; reader.readAsDataURL(selectFile) } ... (略) ... </script> |
1 2 |
Type 'string | ArrayBuffer' is not assignable to type 'string'. Type 'ArrayBuffer' is not assignable to type 'string'. |
原因と対応
原因
これは、e.target.result
の戻り値の型がstring | ArrayBuffer
となっているため、フィールドの型定義も同様にstring | ArrayBuffer
にする必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<template lang="pug"> ... (略) ... </template> <script lang="ts"> ... (略) ... export default class App extends Vue { private imageData: string | ArrayBuffer = ""; ... (略) ... fileChange(event) { let selectFile = event.target.files[0] let path = this.file; let reader = new FileReader() reader.onload = (e) => { let result = e.target.result this.imageData = result }; reader.readAsDataURL(selectFile) } ... (略) ... </script> |
これでエラーが出なくなります。
終わりに
以上のように、対応方法はとても簡単です。
お困りの方はこちらの方法を試してみてください。