为什么使用// @ ts检查VS代码中的Javascript,我的数组中不存在属性'find'? (2018年,打字稿2.7x)

问题描述 投票:0回答:1

**更新

console.log(Array.isArray(primaryNumberFemales)); // true

我导出它:

export {
  primaryNumberFemales,
};

**结束更新

我有一个数组(当然是类型对象),如下所示:

const primaryNumberFemales = [{
  name: 'Sky',
  number: 6,
  duality: 'Yang',
  complexity: 'Complex',
  year: [1910,
    1919,
    1928,
    1937,
    1946,
    1955,
    1964,
    1973,
    1982,
    1991,
    2000,
    2009,
    2018,
  ],
},
{
  name: 'Lake',
  number: 7,
  duality: 'Yin',
  complexity: 'Simple',
  year: [1911,
    1920,
    1929,
    1938,
    1947,
    1956,
    1965,
    1974,
    1983,
    1992,
    2001,
    2010,
    2019,
  ],
},
];

我导入的是:

import {
  primaryNumberFemales,
} from './data';

并确认它是导入后的对象(因此没有任何有趣的事情发生):

console.log(typeof primaryNumberFemales); // object

我想在VS Code 1.20.1中键入check my JS,所以添加:

// @ ts-check

现在使用下面的代码我在find的每个实例的linter中得到一个错误,该程序工作正常!:

  return (gender === 'F') ? {
    primaryNumber: (primaryNumberFemales.find(includesYearOfBirth) || {}).number,
    typeOfExpression: (primaryNumberFemales.find(includesYearOfBirth) || {}).name,
  } : {
    primaryNumber: (primaryNumberMales.find(includesYearOfBirth) || {}).number,
    typeOfExpression: (primaryNumberMales.find(includesYearOfBirth) || {}).name,
  };

类型'{[x:string]上不存在属性'find':any; name:string;号码:号码;二元性:字符串;复杂性:字符串;一年:麻木......'。

我知道Array.prototype.find()是es6,过去不支持它(之前有很多帖子),但现在肯定应该支持它。我的代码有问题,还是这种错误?谢谢!

javascript typescript visual-studio-code
1个回答
0
投票

如果我在脑海中解析代码,当我看到这个表达式时:

import { primaryNumberFemales } from './data';

我想知道错误是不是在这里,因为你的模块不会导出这个常量。要解决这个问题,我会使用export关键字:

export const primaryNumberFemales = [{
    name: 'Sky',
    number: 6,
    duality: 'Yang',
    complexity: 'Complex',
    year: [1910,
      1919,
      1928,
      1937,
      1946,
      1955,
      1964,
      1973,
      1982,
      1991,
      2000,
      2009,
      2018,
    ],
  },
  {
    name: 'Lake',
    number: 7,
    duality: 'Yin',
    complexity: 'Simple',
    year: [1911,
      1920,
      1929,
      1938,
      1947,
      1956,
      1965,
      1974,
      1983,
      1992,
      2001,
      2010,
      2019,
    ],
  },
  ];

如果我通过编译器运行这个例子看起来很开心,我也可以使用Array.find方法。我已将我的编译器设置为目标ES6

© www.soinside.com 2019 - 2024. All rights reserved.