addmixin函数的Typescript定义
Typescript definition for an add mixin function
是否有一种方法可以为下面的混合帮助器编写Typescript定义?
我在library.js中有这个模式,我想创建library.d.ts
// declaration in `library.js`
var mixin = {
example: function {}
}
function addMixin(instance) {
instance.example = mixin.example;
return example;
}
// usage in `client.js`
class MyClass {}
let myInstance = addMixin(new MyClass());
一种可能的方法是使用泛型参数T声明addMixin,并将addMixin返回类型声明为T与mixin类型的交集类型。
要做到这一点,addMixin参数必须以某种方式声明,以允许对example
属性赋值-同样,交叉类型,但这次使用可选的example
属性可以做到这一点。
然后,您必须对addMixin
返回值使用类型强制转换-如果有某种类型保护能够表示它在赋值后始终具有example
属性,那将是很好的,但是类型强制转换现在将完成它。(我假设你想从它返回instance
, return example
在你的问题给出了一个关于未定义的example
的错误)。
所以,addMixin
在typescript中的实现看起来像
var mixin = {
example: function () { }
};
function addMixin<T>(instance: T & { example?() }): T & { example() } {
instance.example = mixin.example;
return instance as T & { example() };
}
如果实际的实现是在javascript中,你只需要它的声明文件,它看起来像
// declaration in library.d.ts
declare function addMixin<T>(instance: T & { example?() }): T & { example() };
// implementation in library.js
var mixin = {
example: function() {}
};
function addMixin(instance) {
instance.example = mixin.example;
return instance;
}
// can be used in client.ts with library.d.ts
// tsc client.ts library.d.ts
class MyClass {}
let myInstance = addMixin(new MyClass());
myInstance.example();
相关文章:
- 在gump和nodejs中使用Typescript时,未定义对require和exports的引用
- 为其他JS生成定义“;编译器”;来自TypeScript定义文件
- 如何用Typescript用自定义方法实现类数组
- typescript定义构造函数或函数
- Angular2-TypeError:无法读取属性'Id'(Typescript)中未定义的
- Angular 2中的@Angular包缺少TypeScript类型定义
- 如何存根Typescript接口/类型定义
- TypeScript定义外部类
- Visual Studio 2015 Update 2-'中的TypeScript模块;要求'未定义
- 我是否必须在每个文件中引用 TypeScript 定义
- Typescript和Browserify-未捕获的TypeError:无法读取属性'步骤'的未定义
- Typescript定义:如何在类内部声明类
- 有没有一种简单的方法来安装TypeScript定义
- TypeScript-如何定义具有任何类型参数的函数类型
- NodeJS'到UpperCase'的未定义(从typescript生成)
- TypeScript运行时错误'未定义'
- 运行时未定义Typescript模块
- 如何为函数定义Typescript接口
- 为Magnific Popup定义Typescript文件
- react-boostrap-typeahead的自定义Typescript定义