TypeScript:对象类型的索引签名隐式具有“ any”类型

乌兹

我的功能有问题:

    copyObject<T> (object:T):T {
        var objectCopy = <T>{};
        for (var key in object) {
            if (object.hasOwnProperty(key)) {
                objectCopy[key] = object[key];
            }
        }
        return objectCopy;
    }

而且我有以下错误:

Index signature of object type implicitly has an 'any' type.

我该如何解决?

马丁·维斯蒂卡
class test<T> {
    copyObject<T> (object:T):T {
        var objectCopy = <T>{};
        for (var key in object) {
            if (object.hasOwnProperty(key)) {
                objectCopy[key] = object[key];
            }
        }
        return objectCopy;
    }
}

如果我按以下方式运行代码

c:\Work\TypeScript>tsc hello.ts

它工作正常。但是,以下代码:

c:\Work\TypeScript>tsc --noImplicitAny hello.ts

抛出

hello.ts(6,17): error TS7017: Index signature of object type implicitly has an 'any' type.
hello.ts(6,35): error TS7017: Index signature of object type implicitly has an 'any' type.

因此,如果禁用noImplicitAny标志,它将起作用。

似乎还有另一个选择,因为它tsc支持以下标志:

--suppressImplicitAnyIndexErrors   Suppress noImplicitAny errors for indexing objects lacking index signatures.

这也对我有用:

tsc --noImplicitAny --suppressImplicitAnyIndexErrors hello.ts

更新:

class test<T> {
    copyObject<T> (object:T):T {
        let objectCopy:any = <T>{};
        let objectSource:any = object;
        for (var key in objectSource) {
            if (objectSource.hasOwnProperty(key)) {
                objectCopy[key] = objectSource[key];
            }
        }
        return objectCopy;
    }
}

此代码无需更改任何编译器标志即可工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TypeScript + ES6 Map +对象类型的索引签名隐式具有“ any”类型

Typescript:TS7017对象类型的索引签名在循环中隐式具有“ any”类型

对象类型的TypeScript索引签名隐式具有任何类型

React Typescript:元素隐式地具有“ any”类型,因为类型没有索引签名

这是什么意思?对象类型的索引签名隐式具有“ any”类型。

Typescript-React State:元素隐式具有“ any”类型,因为类型“ State”没有索引签名

错误TS7017:对象类型的索引签名在表单验证angular 2中隐式具有“ any”类型

元素隐式具有“任何”类型,因为类型对象没有索引签名

元素隐式具有 'any' 类型,因为类型 'typeof globalThis' 没有索引签名

元素隐式具有 'any' 类型,因为类型 '{}' 没有索引签名

Angular - 元素隐式具有“any”类型,因为“AbstractControl”类型没有索引签名

元素隐式地具有“ any”类型,因为索引表达式不是“ number”类型。-索引签名错误

在启用noImplicitAny标志的打字稿中编译时,如何防止错误“对象类型的索引签名隐式具有'any'类型”错误?

元素隐式具有 'any' 类型,因为类型 'typeof globalThis' 没有索引签名。 ts(7017) 打字稿

Typescript错误:元素隐式具有“ any”类型,因为类型“ string”的表达式不能用于索引类型

TypeScript:隐式具有“ any”类型,因为类型“ string”的表达式不能用于索引类型

TypeScript - 元素隐式具有“any”类型,因为“storyFile”类型的表达式不能用于索引类型“{}”

Node + TypeScript:“ this”隐式具有类型“ any”

元素隐式具有“任何”类型,因为类型“Map<String, DayConsumptionDto[]>”没有索引签名

元素隐式具有“任何”类型,因为类型“ {}”没有索引签名。[7017]

元素隐式具有“任何”类型,因为类型没有索引签名

变量“ a”隐式具有“ any []”类型

参数隐式具有“ any”类型

TypeScript TS7015:元素隐式地具有“ any”类型,因为索引表达式不是“ number”类型

元素隐式具有“ any”类型,因为索引表达式不是“ number”类型[7015]

TypeScript / ReactJS / setTimeout:'this'隐式地具有'any'类型,因为它没有类型注释。

TypeScript:'this' 隐式具有类型 'any',因为它没有类型注释

元素隐式地具有“ any”类型,因为类型“ any”的表达式不能用于索引类型

TypeScript-元素隐式地具有“ any”类型,因为类型“ string”的表达式不能用于索引类型