Lin*_*not 1 javascript typescript
在 C# 中,可以将对象属性的名称作为字符串值获取。
nameof(object.myProperty) --> "myProprty"
这可以在 Javascript/Typescript 中完成吗?
Object.Keys() 是我唯一找到的东西,但它给了我所有的钥匙。
例如我想要实现的目标:
export interface myObject {
myProperty: string;
}
console.log(myObject["myProperty"]);
Run Code Online (Sandbox Code Playgroud)
假设我出于某种原因将界面更改为:
export interface myObject {
myPropertyOther: string;
}
console.log(myObject["myProperty"]); // This will not give an error on build
Run Code Online (Sandbox Code Playgroud)
所以我想要这样的东西:
console.log(myObject[nameOf(myObject.myProperty)]
// This will give an error on build when the interface is changed
Run Code Online (Sandbox Code Playgroud)
nameofJavascript/Typescript 中没有运算符。您可以创建一个函数,该函数采用另一个对象的键,并由打字稿编译器检查:
function keyOf<T>(o: T, k: keyof T) {
return k
}
let o = { a: 1 }
keyOf(o, 'a'); //ok
keyOf(o, 'b'); //err
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1924 次 |
| 最近记录: |