TypeScript 有没有办法让联合类型成为仅在类中找到的键的联合?
例如,让 MyClass
如下:
class MyClass {
propertyA: string;
propertyB: number;
propertyC: number[];
someMethod() {
// Do something
}
}
有什么方法可以告诉 TypeScript 我只需要 MyClass
的属性的联合类型?所以,像
type MyType in keyof MyClass = "propertyA" | "propertyC";
这是无效的语法,但这是我正在寻找的效果。
如果我也试试
type MyType in keyof MyClass = "propertyA" | "propertyC" | "heyThere";
这将是一个错误,但以下内容
type MyType in keyof MyClass = "propertyA" | "propertyB" | "propertyC";
不会。
我在 TypeScript 中缺乏正式的词汇,所以我不确定什么可能对这里有帮助。
我在这里和网上都看过,但我发现的东西与我要找的东西不同。例如,我遇到过
type MyType = keyof MyClass;
但这给了我 MyClass
中的一切。
奖励:我们如何告诉 TypeScript 我们期望的类型必须是字符串的联合?
我还注意到,如果我使用 Pick
内置类型,TypeScript 会正确地强制我为该类选择键,而 Omit
内置类型不会。这就是我寻找这个警告的原因。