Javascript 类型';字符串| ArrayBuffer#x27;不可分配给类型';字符串';
从FileReader读取字符串时出现TypeScript错误 读取文件内容的简单代码:Javascript 类型';字符串| ArrayBuffer#x27;不可分配给类型';字符串';,javascript,typescript,arraybuffer,Javascript,Typescript,Arraybuffer,从FileReader读取字符串时出现TypeScript错误 读取文件内容的简单代码: const reader: FileReader = new FileReader(); reader.readAsText(file); reader.onload = (e) => { const csv: string = reader.result; -> getting TS error on this line } 我得到的类型脚本错
const reader: FileReader = new FileReader();
reader.readAsText(file);
reader.onload = (e) => {
const csv: string = reader.result; -> getting TS error on this line
}
我得到的类型脚本错误:
Type 'string | ArrayBuffer' is not assignable to type 'string'.
Type 'ArrayBuffer' is not assignable to type 'string'.
错误消息说明了一切 您可以声明
csv
变量的string
类型。
然后将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() */}
无论
csv
是string
还是ArrayBuffer
,这都将始终输出字符串
const csv:string=typeof csv=='string'?csv:Buffer.from(csv.toString())
将reader.result
转换为string
。您也可以像const csv=reader.result.toString()
那样执行toString
操作,它会处理所有问题,消除类型错误,并转换为字符串。