Mar*_*ona 27 extends interface typescript definitelytyped
在我的TypeScript项目中,我对外部js依赖项使用DefinitelyTyped定义.
有时可能会发生这些定义过时的情况.它也可能发生在某些库可以在运行时添加新方法,例如express-validator,您可以在其中定义自定义验证器函数.
因此,我想扩展这些.d.ts
定义,添加新的方法和/或属性.
所以,如果我有我的DefinitelyTyped defininiton express-validator.d.ts
:
declare module ExpressValidator {
export interface Validator {
is(): Validator;
not(): Validator;
isEmail(): Validator;
...
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能扩展Validator
界面,例如我的application.ts
?
///<reference path='../typings/tsd.d.ts' />
import expressValidator = require('express-validator');
export var app = express();
app.use(expressValidator({
customValidators: {
isArray: function(value) {
return Array.isArray(value);
}
}
}));
// How to extend Validator interface adding isArray() method??
Run Code Online (Sandbox Code Playgroud)
bas*_*rat 27
//如何扩展Validator接口添加isArray()方法?
您不能在作为模块的文件中执行此操作(此处有一些指导),并且您的文件是模块,因为您有import expressValidator
.
而是extendedValidator.d.ts
为TypeScript的引擎创建并添加新内容:
declare module ExpressValidator {
export interface Validator {
isArray: any;
}
}
Run Code Online (Sandbox Code Playgroud)
我能够按照https://www.credera.com/blog/technology-solutions/typescript-adding-custom-type-definitions-for-existing-libraries/上的说明完成此操作。在那里他们使用react
.
import 'react';
declare module 'react' {
interface OlHTMLAttributes<T> {
type?: "1" | "a" | "A" | "i" | "I";
}
}
Run Code Online (Sandbox Code Playgroud)
我发现这也非常有效winston
。
归档时间: |
|
查看次数: |
15645 次 |
最近记录: |