在数组元素上使用 includes 获取 TypeScript 错误。当然,一旦编译成 js 它就可以正常工作,但我仍然会收到以下 TypeScript 错误:
Property 'includes' does not exist on type 'boolean[]'
代码:
validAttrs() {
let valid: boolean[] = this.required.map((value, index) => {
if(this.elm.nativeElement.getAttribute(value) === null) {
return false;
};
return true;
});
return valid.includes(false) ? false : true;
}
最佳答案
就修复编译错误而言,修复编译问题是添加 es2016
到 lib
我的选项 tsconfig.json
.这添加了必要的声明 includes
在数组上。
我尝试使用 TypeScript 2.1.4 suggested fix更换 boolean[]
与 Array<boolean>
.这没有任何区别。从逻辑上讲,它不应该有所作为,因为 boolean[]
和 Array<boolean>
是同一件事。
话虽如此,我同意 torazaburo OP 的代码应实现为:
validAttrs() {
return this.required.every(value => this.elm.nativeElement.getAttribute(value) !== null);
}
除了去除不必要的逻辑,这还有一个好处是every
一旦回调返回一个虚假值,就停止检查数组。没有必要检查其余部分,因为返回值必然是 false
一旦回调返回一个虚假值。另一方面,问题中的实现将始终对数组的所有元素执行测试。如果第一个元素没有通过测试,那么它将不必要地检查数组的其余部分!!
关于javascript - 相当于 JavaScript 的 TypeScript includes(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41260616/