typescript - 如何在 typescript 中用另一个参数约束可选参数

标签 typescript

我有以下功能

        private map(model: Model, id?: number, someVariable?:number) {... }

我的问题是,如果 id 存在,则 someVariable 必须存在。否则,该方法中的逻辑将不起作用,并且会出现异常。

解决方案之一是在一个类中设置这两个变量。但是,我想知道 typescript 是否有这样的功能。

我正在使用 Typescript 2.0.3。

最佳答案

您可以使用function overloading为此:

map(model: Model);
map(model: Model, id: number, someVariable:number);
map(model: Model, id?: number, someVariable?:number) {
    //implementation
}

那么实际的实现签名是不可调用的:

this.map(m); //valid
this.map(m, 1, 2); //valid
this.map(m, 1); //error

关于typescript - 如何在 typescript 中用另一个参数约束可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39952624/

相关文章:

javascript - node/nodemon 中的 typescript 是否有源映射支持?

javascript - Node - 使用 mocha 测试时更改输出颜色

javascript - 我可以在 javaScript 和 typeScript 中为 firebase 编写云函数吗?

typescript - 我应该在 TypeScript 中输入所有内容吗

具有http服务 promise 的Angular 2更新组件变量

html - FontAwesome 图标未出现在 typescript 文件中

javascript - 使用 TypeScript 在现有原型(prototype)上扩展实例/静态函数

javascript - 如何在 Angular2 的模板指令中使用 html?

typescript - Jest spyOn 不适用于 typescript : "Property ' mockRestore' is missing in type 'Spy' "

angular - 实现秒表的最有效方法?