Typescript - 具有接口的类的默认参数
Posted
技术标签:
【中文标题】Typescript - 具有接口的类的默认参数【英文标题】:Typescript - Default parameters on class with interface 【发布时间】:2013-09-09 12:19:48 【问题描述】:我有一个场景,我有一个接口,它的方法如下:
interface SomeInterface
SomeMethod(arg1: string, arg2: string, arg3: boolean);
还有这样的课程:
class SomeImplementation implements SomeInterface
public SomeMethod(arg1: string, arg2: string, arg3: boolean = true)...
现在的问题是我似乎无法告诉界面第三个选项应该是可选的或具有默认值,就好像我试图告诉界面有一个默认值我得到错误:
TS2174: Default arguments are not allowed in an overload parameter.
如果我从界面中省略默认值并像这样调用它:
var myObject = new SomeImplementation();
myObject.SomeMethod("foo", "bar");
它抱怨参数不匹配任何覆盖。那么有没有办法能够为参数设置默认值并从接口继承,我不介意接口是否也必须将值设为默认值,因为它始终是可选参数。
【问题讨论】:
【参考方案1】:您可以使用?
将参数定义为可选:
interface SomeInterface
SomeMethod(arg1: string, arg2: string, arg3?: boolean);
【讨论】:
哦,我认为这已被删除以支持最近版本之一中的默认值。所以我可以使用接口中的可选参数和类中的默认值参数吗? 您仍然可以在任何地方使用没有默认值的可选参数。唯一不允许的是冗余语法x ?= 4
- 您可以使用 ?
或默认值。
请注意,如果您调用SomeMethod('foo','bar')
,arg3
参数将是undefined
,而不是null
。
此外,如果您有一个可选参数,那么所有以下参数也必须是可选的。所以arg4: boolean
是不允许的。以上是关于Typescript - 具有接口的类的默认参数的主要内容,如果未能解决你的问题,请参考以下文章