我可以检查字符串是否作为接口密钥
public class OldPerson {
public string Name { get; set; }
public DateTime DateOfBirth {get; set; }
}
public class NewPerson {
public string Name { get; set; }
public DateTime DateOfBirth { get; set; }
public string Height { get; set; }
public string Weight { get; set; }
...some other fields
}
如何检查myNumber值是否为接口键
答案 0 :(得分:0)
要执行此操作,您将需要一些可以在运行时获取接口键的东西。 interface
在运行时不存在-纯粹是TypeScript构造,因此在发出的代码中不存在。
创建一个包含键的数组,将其声明为as const
,这样它就不会自动进行类型扩展,然后便可以将其转换为List
类型。然后,您将拥有可以使用.includes
检查的类型和运行时数组:
const listKeys = ['one', 'two'] as const;
type List = Record<typeof listKeys[number], string>;
// ...
const obj = {
one: 'one',
two: 'two',
three: 'three'
};
// Transformation to string[] needed because of an odd design decision:
// https://github.com/Microsoft/TypeScript/issues/26255
const newObj = Object.fromEntries(
Object.entries(obj).filter(
([key]) => (listKeys as unknown as string[]).includes(key)
)
);
答案 1 :(得分:0)
Typescript的类型不是值。
因此,无法执行Javascript。
但是,在示例中,可以设置类型,以便myNumber是与键对应的类型。
interface list {
one: string
two: string
}
const myNumber: keyof list = "one"; // myNumber allow only "one" or "two";