是否可以在带有可选功能的TypeScript中创建接口?
interface IElement {
name: string;
options: any;
type: string;
value?: string;
validation(any): boolean; // --> should be optional.
}
Answers:
当前,TypeScript允许在接口中进行函数声明的三种语法:
使用带有validation1个参数(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不是类型,而是隐式为type的参数名称any。即使在接口上也必须命名参数。如果启用--noImplicitAny,则此代码将无法编译。它应该是这样的:合理的参数名称validation?:(whatever:any) => boolean;在哪里whatever。
if (object.validation):)它需要针对对象上下文,因此if (this.validation)根据您的情况也可能适当。