如何删除TypeScript警告:property' length'类型' {}'上不存在

时间:2014-11-23 13:27:47

标签: typescript multidimensional-array

在TypeScript文件中,我定义了一个3D数组:

var myArr = ['one', [[19, 1], [13, 1], [86, 1], [12, 2]],
             'two',    [[83, 1], [72, 1], [16, 2]],
             'three',  [[4, 1]]];

function testArray(){
    console.log(myArr[1].length);
}

我在长度属性下收到警告:

  

“{}”

类型中不存在“属性'长度'

我有什么办法可以删除此警告吗?

3 个答案:

答案 0 :(得分:12)

我在这里阅读了类似的帖子: How can I stop "property does not exist on type JQuery" syntax errors when using Typescript?

这解释了我可以转换为< any>。

这对我有用:

function testArray(){
    console.log((<any>myArr[1]).length);
}

答案 1 :(得分:3)

选项1:升级到最前沿的编译器并获取联合类型

选项2:向变量声明添加类型注释:

var myArr: any[] = ['one', [[19, 1], [13, 1], [86, 1], [12, 2]],
             'two',    [[83, 1], [72, 1], [16, 2]],
             'three',  [[4, 1]]];

function testArray(){
    console.log(myArr[1].length);
}

答案 2 :(得分:1)

我之前遇到过此错误,您必须将类型强制转换为任意 使用您必须扩展的泛型。

查看示例打击:

const result = <T extends any>(arr:T[]):T => {
  return arr[arr.length - 1] 
}

result([1,2,3])