给出示例代码,可以通过给属性定义类型来解决问题。
例如,假设有以下代码:
const data = {
name: 'Alice',
age: 20
};
const key = 'name';
console.log(data[key]);
在此示例中,data
对象具有name
和age
属性。 key
变量具有值'name'
,我们使用它来获取data
对象的name
属性。
但 TypeScript 会发出编译错误,“Element implicitly has an 'any' type because expression of type 'string' can't be used to index type” ,因为我们没有给data
对象的属性定义类型。
要解决该问题,我们可以给属性定义类型,例如:
interface IData {
name: string;
age: number;
}
const data: IData = {
name: 'Alice',
age: 20
};
const key: keyof IData = 'name';
console.log(data[key]);
这里我们创建了一个名为IData
的接口,它指定了name
属性的类型为string
,age
属性的类型为number
。我们将data
对象声明为类型为IData
的变量,并将key
声明为IData
的属性键类型。现在,当我们使用key
变量来获取对象的属性时,TypeScript 不会再给出编译错误。