typescriptで既存の型を拡張する場合の問題
typescriptで既存の型を拡張する場合 interfaceを使って例えばsum関数であれば
interface Array<T>{
sum():number;
}
Array.prototype.sum = function(){
return this.reduce((i,j)=>i+j)
};
このように書けますが、上記の場合 number|stringの配列
[1,2,3,"4"].sum() //64
と書いてもコンパイルエラーになりません(当たり前ですが)
Array< number >にのみsumを追加させ
他の型ではコンパイルエラーにさせたいのですが可能でしょうか。
後
var a = [1,2,3,"4"].sum()
で a が コンパイル前はnumber型ですが実行時の型がstringと
間違った型になってしまいます。