gpt4 book ai didi

typescript :来自接口(interface)参数的字符串文字类型

转载 作者:行者123 更新时间:2023-12-05 02:18:50 26 4
gpt4 key购买 nike

假设我有一个这样的界面

interface I{
id: string;
name: string;
age: number;
}

还有这样的方法

var obj:I={
id: 'abc',
name: 'Jim',
age: 23
};
changeProperty(name:string, value:any){
obj[name] = value;
}

有没有办法声明name参数type来匹配接口(interface)字段?

一个解决方案是这样的

changeProperty(name: 'id' | 'name' | 'age' , value:any)

但是在一个接口(interface)可以有 20 多个字段的更大的项目中,维护它要困难得多。

最佳答案

是的,如 keyof and lookup types 的示例中所述:

function changeProperty<N extends keyof I>(name: N, value: I[N]){
obj[name] = value;
}

changeProperty('id', '123'); // ok
changeProperty('age', 53); // ok
changeProperty('name', 1); // Argument of type '1' is not assignable to parameter of type 'string'

关于 typescript :来自接口(interface)参数的字符串文字类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44117727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com