接口中的 TypeScript 可选函数
Posted
技术标签:
【中文标题】接口中的 TypeScript 可选函数【英文标题】:TypeScript Optional function in Interface 【发布时间】:2015-02-15 20:19:30 【问题描述】:是否可以在 TypeScript 中创建具有可选功能的接口?
interface IElement
name: string;
options: any;
type: string;
value?: string;
validation(any): boolean; // --> should be optional.
【问题讨论】:
我找到了答案,我认为有可能实现这样的可选功能:validation?: (any) => boolean; 【参考方案1】:目前 TypeScript 允许在接口中声明函数的三种语法:
使用您的 validation
函数示例,该函数采用 1 个参数(any
类型)和 boolean
返回值:
validation: (flag: any): boolean;
或在较新的语法中:
validation(flag: any) : boolean;
或者另一种选择是:
validation: (flag: any) => boolean;
解决方案:
所以使用旧语法使其成为可选很容易:
validation?: (flag: any): boolean;
使用第二种语法(最近添加 - 感谢@toothbrush
)
validation?(flag: any) : boolean;
或在第三种语法中(如您所见):
validation?: (flag: any) => boolean;
【讨论】:
按照您的编写方式,any
不是类型,而是隐式类型为 any
的参数的名称。参数必须命名,即使在接口上也是如此。如果启用了 --noImplicitAny,此代码将无法编译。它应该是这样的:validation?:(whatever:any) => boolean;
其中whatever
是一些合理的参数名称。
@NYCdotNet:是的,我不应该把原来的 as-read 拿走。更正:)
@gone-coding 嗨!我如何知道函数是否已定义?
@IlanOlkies:与您在 javascript if (object.validation)
中测试任何内容的方式相同:) 它需要针对对象上下文,因此 if (this.validation)
也可能适合您的具体情况。以上是关于接口中的 TypeScript 可选函数的主要内容,如果未能解决你的问题,请参考以下文章