想象一下,當傳遞一個引數和兩個引數時,我有一個行為不同的函式。例如:
function test(a: string | number, b?: number ) {
if(typeof b !== 'undefined' && typeof a === "number"){
return a * b
}
if (typeof a === "string" && typeof b === "undefined"){
return a.toUpperCase()
}
throw new Error("Incorrect Params");
}
功能行為:
當 only
a存在并且它是一個字串時,將其轉換為大寫。當兩者
a都b存在時,兩者都必須是數字,并將它們相乘。任何其他型別的組合都會引發錯誤
問題是,是否可以以這種行為反映在 IDE 中的方式鍵入它?
也就是說,當只有一個引數傳遞給它時,IDE 會顯示這個

但是當傳遞兩個或添加一個逗號時,行為會改變以顯示:

這將允許在代碼開發程序中避免錯誤。
澄清:暴露的功能只是一個例子,而不是一個真實的用例。我仍然認為這將非常有用,并且我已經看到它在 
uj5u.com熱心網友回復:
在查看標記為重復的問題后,可能的解決方案將是(不是最佳的,因為我必須更改函式的行為):
function test(...args: [a: string] | [a: number, b: number]): number | string {
let a = args[0];
let b = args[1];
if (typeof b !== "undefined" && typeof a === "number") {
return a * b;
}
if (typeof a === "string" && typeof b === "undefined") {
return a.toUpperCase();
}
throw new Error("Incorrect Params");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/494269.html
