0
我試圖爲Typescript構建一個更好的投射模型來捕捉無效類型的投射。我想盡可能保持簡單,所以消費者不必提供不必要的論據,但似乎打字稿仿製藥並不真正允許我想要做什麼......爲Typescript構建一個更好的投射系統
這是我想要的該函數的樣子:
module cast {
export function to<T>(obj : any) : T {
if (obj instanceof T) {
return <T>obj;
}
throw new Error("Nope...");
}
}
// Usage
var animal: Animal = getAnimal();
var mySnake = cast.to<Snake>(animal);
不幸的是,據我知道你不能在函數體內引用泛型參數,所以我能做的最好的是:
module cast {
export function to<T>(f : Function, obj : any) : T {
if (obj instanceof f) {
return <T>obj;
}
throw new Error("Nope...");
}
}
// Usage
var animal: Animal = getAnimal();
var mySnake = cast.to<Snake>(Snake, animal);
該作品,但我不是這個創造的簽名的粉絲。參數是多餘的。任何人都知道一種方法來使這個工作瓦特/只引用一次類型?
我喜歡這個。可能想要返回null而不是拋出異常。如果我不在意如果它不是一條蛇,我就會拋棄它,只會將它拋到並希望最好。你怎麼看? –
user1852503
2014-09-12 14:51:06
我同意。我實際上創建了第二種方法(見上面的編輯) – jt000 2014-09-12 15:01:44
恕我直言,未定義意味着這個變種沒有被設置。 null意味着'我不知道它是什麼'。 – user1852503 2014-09-12 15:23:33