gpt4 book ai didi

javascript - 从 TypeScript 中的 lambda 表达式中检索属性名称

转载 作者:搜寻专家 更新时间:2023-10-30 21:04:25 24 4
gpt4 key购买 nike

我想强类型属性名

myMethod(model => model.userId);

public myMethod(model: () => any) {
//Must print "userId"
}

我已经知道这行不通,因为 JavaScript 会评估 userId。

在 C# 中很容易实现:

Get string property name from expression

Retrieving Property name from lambda expression

是否可以在 TypeScript/JavaScript 中实现?

最佳答案

与 C# 不同,在 JavaScript 中可以通过名称动态访问属性(因此也可以通过 Typescript),因此您可以将名称作为字符串传递给函数并使用括号表示法来访问属性:

myMethod(model, "userId")

现在关于 typescript 的一个很酷的事情是这个字符串实际上可以是类型安全的:

function myMethod<T, K extends keyof T>(model: T, key: K) {
const value = model[key];
//...
}

Read on


如果您真的想像在 C# 中那样做类似的事情(不要!),只需这样做:

function myMethod(model: () => any) {
const key = model.toString().split(".")[1];
//...
}

关于javascript - 从 TypeScript 中的 lambda 表达式中检索属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50949905/

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