问题描述
我想从类内部引用类的类型而不必使用其名称
这就是我现在的样子:
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
返回的只是一个字符串。
解决方法
如果您使用public myProp
,则可以使用'this'
class MyClassThatMightHaveAQuiteLongName {
public myProp: SomeType;
someMethod() {
let foo: this['myProp']; // to make foo a SomeType
}
}
您还可以使用类型别名来缩短类名,假设所有类都在不同文件中。
type ThisClass = MyClassThatMightHaveAQuiteLongName
export class MyClassThatMightHaveAQuiteLongName {
public myProp: SomeType;
someMethod() {
let foo: ThisClass['myProp']; // to make foo a SomeType
}
}