类型 'string | ArrayBuffer' 不可分配给类型 'string'
Type 'string | ArrayBuffer' is not assignable to type 'string'
从 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'.
错误消息说明了一切。
您声明了一个 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() */}
无论 csv
是 string
还是 ArrayBuffer
,这将始终输出一个字符串。
const csv: string = typeof csv === 'string' ? csv : Buffer.from(csv).toString()
从 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'.
错误消息说明了一切。
您声明了一个 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() */}
无论 csv
是 string
还是 ArrayBuffer
,这将始终输出一个字符串。
const csv: string = typeof csv === 'string' ? csv : Buffer.from(csv).toString()