假设我有一个如下的函数
function addressCombo(street1:string, street2:string = "NA", street3?:string) {
console.log("street1: " + street1);
console.log("street1: " + street2);
console.log("street2: " + street3);
}
Run Code Online (Sandbox Code Playgroud)
我想传递参数值street1,但street3不是street2那么我该怎么做呢?
我来自C#后台,我们按如下方式进行
addressCombo("ABC", street3 : "XYZ");
Run Code Online (Sandbox Code Playgroud)
phi*_*ole 15
这实际上并不是一个 TypeScript 问题,而是一个 JavaScript 问题。
可选参数必须位于后面,并且只有当所有后面的参数也被省略时才可以被省略。否则 JavaScript 不知道您为哪个参数传递了值。
考虑示例中的第二个参数是可选的。在调用中,您只需将其省略,而不传递值。
function addressCombo(street1, street2, street3) {}
addressCombo("LA", "LO")
Run Code Online (Sandbox Code Playgroud)
然而 JavaScript 并不知道你想要"LO"成为street3and not的争论street2。相反,它会将它们分配在行中。
换句话说,street3在你遗漏之后,你就不能再争论了street2。
您可以显式传递undefined给可选参数,如果您省略参数,无论如何都会发生这种情况。在你的例子中,这将是
addressCombo("LA", undefined, "LO")
Run Code Online (Sandbox Code Playgroud)
另请参阅
pza*_*ger 10
您可以使用对象来传递参数(或类似的东西streets: { [key: string]: string }):
function addressCombo({street1, street2, street3}: { street1?: string; street2?: string; street3?: string } = {}) {
console.log("street1: " + street1);
console.log("street2: " + street2);
console.log("street3: " + street3);
}
addressCombo()
// Log:
// street1: undefined
// street2: undefined
// street3: undefined
addressCombo({ street1: 'A', street2: 'B', street3: 'C' });
// Log:
// street1: A
// street2: B
// street3: C
addressCombo({ street1: 'A', street3: 'C' });
// Log:
// street1: A
// street2: undefined
// street3: C
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31434 次 |
| 最近记录: |