javascript - 相当于 JavaScript 的 TypeScript includes()

标签 javascript angular typescript

在数组元素上使用 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;
}

最佳答案

就修复编译错误而言,修复编译问题是添加 es2016lib我的选项 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/

相关文章:

javascript - 使用 chrome 扩展进行键盘模拟

javascript - 如何选择同级元素的子元素?

javascript - 如何在数组中查找重复项并合并嵌套数据

angular - 'then' 类型不存在属性 '() => Promise<{}>' 。 - ionic 3

javascript - 使用 nyc 运行 mocha 时指定 mocha.opts 的位置?

javascript - 如何在每次打开对话框时重新加载包含 jquery 对话框的 iframe 的 src?

Angular 7 调用 Azure Indexer 服务

从父组件调用的子组件内的 Angular 2 ng2-bootstrap 模态

javascript - Strapi - 如何同时上传文件和创建新模型条目?

javascript - redux 连接到组件 typescript DispatchProps<any> 错误