В машинописи нет оператора nameof
(как в C #).Существует оператор типа keyof
, который позволяет указать, что строка должна быть ключом типа.Таким образом, мы могли бы переписать вашу функцию следующим образом:
class User {
userId: number;
name: string
}
function foo<T, K extends keyof T>(arg: T, key: K) {
return key
}
let user = new User();
foo(user, "userId") // => returns string: "userId"
foo(user, "name") // => returns string: "name"
foo(user, "namee") // error
Примечание Имеется реализация nameof
для Typescript от другого пользователя SO, Дэвида Шеррета, вы можете найти ее здесь ,Я лично не пробовал это, но это может быть полезно.