我有一个服务,其中有两个方法,我想进行方法链接并获取其类型信息。
const result = FirstMethod().SecondMethod();
方法的定义如下:
FirstMethod(): any {
// do some stuff
return this;
}
SecondMethod(): MyAwesomeType {
return this.getMyAwesomeValue();
}
问题是结果返回为任何类型,但没有类型信息。我希望这是因为我的第二个方法返回了MyAwesomeType
,我将能够获得该类型的信息。
很明显,我可以将结果强制为我可能期望的类型,但是例如,如果我在此处输入错误的类型,则不会提供太多的类型安全性。我该怎么办?
答案 0 :(得分:1)
签出Advanced Types。告诉编译器您将返回any
会破坏类型推断除非,您将其封装在一个类中:
class Fooby {
//instead of returning any here, consider returning `this`
foo(): any /*returns Fooby instance*/ {
return this;
}
betterFoo(): this /*returns Fooby instance, more explicit*/ {
return this;
}
bar(): number {
return 3;
}
}
console.log(
new Fooby().foo().bar()//3
);
不能用作函数:
foo2(): any {
return this;
}
bar2(): number {
return 3;
}
console.log(
foo2().bar2()
);
答案 1 :(得分:1)