這是有點問題昨天我在其他地方的改造。打字稿對象包裝,分型和仿製藥
我的目的不是爲了工作的結果,但有一個更好的理解這種設計在返回正確的類型,我可以得到的。通過這裏使用一個簡約的例子,所以請不要告訴我這是無用的或什麼都不做。
代碼示例(Try it in Typescript playground):
interface TestInterface {
test:() => {}
}
class Obj implements TestInterface{
test() {
return { test: 'test' }
}
}
class Wrapper<T extends TestInterface> {
constructor(public obj: T) {
}
test<T>() {
return this.obj.test();
}
test2<T extends TestInterface>(obj: T) {
return obj.test();
}
}
let w = new Wrapper(new Obj());
let r1 = w.obj.test();
let r2 = w.test();
let r3 = w.test2(new Obj);
這裏:
w
具有類型Wrapper<Obj>
r1
具有類型{test: string}
w.test
具有類型Wrapper<Obj>.test:() => {}
r2
具有類型{}
r3
具有{}
這種情況是存儲在屬性對象的類的類型。它代理對這個對象的調用。
我有什麼興趣的r2
返回類型。具體而言,我希望找到一種方法來返回與r1
相同的類型,而不必在三條底線中指定類型。 r3
是另一種測試,通過直接傳遞泛型類型。結果是一樣的。
我有一些問題:
- 從我的理解
OBJ
通用有任何影響之前,Wrapper.test
返回類型得到解決。因此使用其基準值(在這種情況下,{}
這是TestInterface.Test
的結果)。這樣對嗎? - 是否有目的,有些限制,未來TS版本中的一些即將發佈的功能? (沒看到任何東西)
- ,主要,怎麼樣才能夠轉發嵌入對象的方法返回類型(或組成一個新的對象與他們),考慮到在這樣的代理,它應該有可能堵塞什麼尊重
TestInterface
。而且,在呼叫者(底線)處處放置泛型,我知道該怎麼做。
我在這篇文章中看到過一些對象生成器:https://github.com/Microsoft/TypeScript/pull/14141。也許這就是我要採取的方向。
是在OBJ要通過包裝被曝光的每一個公共的方法? – Daryl
這將是一組定義的5種方法。所以5個泛型類型,如果我沒有找到另一種方法。也許即將到來的各種類型會有所幫助,不知道。 – arvymetal
我的答案適合你嗎? – Daryl