【发布时间】:2020-12-24 21:51:06
【问题描述】:
我想从类内部引用类的类型而不使用它的名称
- 所以如果类的名称发生变化,我不需要在多个地方更改我的代码,
- 即使我的类名很长,我的代码也不会再出现,
- 当我看到这个关键字时,我立即知道它指的是什么,而无需查找类型。
这就是我现在的样子:
class MyClassThatMightHaveAQuiteLongName {
private myProp: SomeType;
someMethod() {
let foo: MyClassThatMightHaveAQuiteLongName['myProp']; // to make foo a SomeType
}
}
这就是我想要的方式:
class MyClassThatMightHaveAQuiteLongName {
private myProp: SomeType;
someMethod() {
let foo: thatMagicKeyword['myProp']; // to make foo a SomeType
}
}
只是为了说明我想要什么:
class MyClassThatMightHaveAQuiteLongName {
private myProp: SomeType;
someMethod() {
let foo: (typeof this)['myProp']; // to make foo a SomeType
}
}
这显然不起作用,因为 typeof 只返回一个字符串。
【问题讨论】:
-
我认为不重复
MyClassThatMightHaveAQuiteLongName至少一次是不可能的,因为您需要指定this才能正确键入myProp自我引用 -
如果您使用 IDE 重命名类,第一点就消失了。如果你的类名太长,你无法引用它们,是不是它们太长了,其他人无法引用它们,你应该选择一个更好的名字来代替?
-
@IngoBürk 你是对的,但是,long 是相对的。即使你为你的类选择“正常长度”的名称,如果你在一个“框架环境”中,比如说 Angular,一些用于此目的的 TypeScript 关键字可以让你在
MyShortNamedComponent中节省很多字符。
标签: typescript typescript-types