1
下面的代碼編譯。Typescript使用函數參數應用+ concat
function myFunction(arg1:string, arg2:(msg:string)=>void){ /* do stuff */ }
var args = ["hello", function(msg){ /* do stuff */ }];
myFunction.apply(myFunction, args);
但下面的代碼不編譯,即使可變args
是相同類型的如上。
function myFunction(arg1:string, arg2:(msg:string)=>void){ /* do stuff */ }
var args = ["hello"].concat(function(msg){ /* do stuff */ });
myFunction.apply(myFunction, args);
它會引發以下錯誤。
>> src/workspace.ts(20,29): error TS2345: Argument of type '(msg: any) => void' is not assignable to parameter of type 'string'.
任何想法爲什麼?這是我的代碼中的錯誤還是TypeScript編譯器中的錯誤?
謝謝,這是有道理的。既然它返回一個新的數組,我不知道我是否同意TypeScript的'.concat()'的設計決定,要求它的參數與它所調用的數組的時間相同;對於像'.push()'這樣修改現有數組的東西是有意義的。解決方法雖然可以完成工作。 – sffc