隐式具有 `any` 类型,因为索引表达式不是 'number'.ts7015 类型)
Implicitly has an `any` type becoz index expression is not of type 'number'.ts(7015)
我在 Angular 版本 12 中使用 Zxing 扫描仪组件。
我在很多地方都遇到过这个错误..
/**
* Returns a valid BarcodeFormat or fails.
*/
private getBarcodeFormat(format: string | BarcodeFormat): BarcodeFormat {
return typeof format === 'string'
? BarcodeFormat[format.trim().toUpperCase()]
: format;
}
这一行有错误 [format.trim().toUpperCase()]
,当我悬停时它会显示 Element implicitly has an 'any' type because index expression is not of type 'number'.ts(7015)
。
为什么会出现这个错误??我该如何解决??
我需要一个完美的解决方案,无需更改 angular.json 或 package.json[=15 中的任何配置=]
之所以会报错是因为format
是一个字符串,可以是任意的,所以当你在BarcodeFormat
中使用它的时候,typescript不知道format
是否是一个BarcodeFormat
.
的键数
因此,我们需要告诉 typescript format
实际上是 BarcodeFormat
中键的一部分。
为此,我们可以使用 keyof typeof
的组合来获取 BarcodeFormat
中的键并在 format
.
上进行类型转换
private getBarcodeFormat(format: string | BarcodeFormat): BarcodeFormat {
return typeof format === "string"
? BarcodeFormat[format.trim().toUpperCase() as keyof typeof BarcodeFormat]
: format;
}
这里是codesandbox演示。
我在 Angular 版本 12 中使用 Zxing 扫描仪组件。 我在很多地方都遇到过这个错误..
/**
* Returns a valid BarcodeFormat or fails.
*/
private getBarcodeFormat(format: string | BarcodeFormat): BarcodeFormat {
return typeof format === 'string'
? BarcodeFormat[format.trim().toUpperCase()]
: format;
}
这一行有错误 [format.trim().toUpperCase()]
,当我悬停时它会显示 Element implicitly has an 'any' type because index expression is not of type 'number'.ts(7015)
。
为什么会出现这个错误??我该如何解决??
我需要一个完美的解决方案,无需更改 angular.json 或 package.json[=15 中的任何配置=]
之所以会报错是因为format
是一个字符串,可以是任意的,所以当你在BarcodeFormat
中使用它的时候,typescript不知道format
是否是一个BarcodeFormat
.
因此,我们需要告诉 typescript format
实际上是 BarcodeFormat
中键的一部分。
为此,我们可以使用 keyof typeof
的组合来获取 BarcodeFormat
中的键并在 format
.
private getBarcodeFormat(format: string | BarcodeFormat): BarcodeFormat {
return typeof format === "string"
? BarcodeFormat[format.trim().toUpperCase() as keyof typeof BarcodeFormat]
: format;
}
这里是codesandbox演示。