从FileReader读取字符串的TypeScript错误
读取文件内容的简单代码:
const reader: FileReader = new FileReader();
reader.readAsText(file);
reader.onload = (e) => {
const csv: string = reader.result; -> getting TS error on this line
}
我收到TypeScript错误:
Type 'string | ArrayBuffer' is not assignable to type 'string'.
Type 'ArrayBuffer' is not assignable to type 'string'.
答案 0 :(得分:14)
错误消息说明了一切。
您声明string
类型的csv
变量。
然后,您将string | ArrayBuffer
类型的reader.result
分配给刚分配的string
类型。你不能。您只能将string
分配给string
。
因此,如果您100%确定reader.result
包含string
,则可以断言:
const csv: string = reader.result as string;
但是,如果不确定,请执行以下操作:
const csv: string | ArrayBuffer = reader.result;
// or simply:
const csv = reader.result; // `string | ArrayBuffer` type is inferred for you
然后您通常应该进行一些检查,例如:
if (typeof csv === 'string') {/*use csv*/}
else {/* use csv.toString() */}
答案 1 :(得分:0)
无论csv
是string
还是ArrayBuffer
,这将始终输出字符串。
const csv: string = typeof csv === 'string' ? csv : Buffer.from(csv).toString()