查看TypeScript文档并尝试
Intersection Types
Mixins
用打字机
types
,
Interfaces
,或
Classes
这是用来申请的
mixins
打字体:
function applyMixins(derivedCtor: any, baseCtors: any[]) {
baseCtors.forEach(baseCtor => {
Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {
Object.defineProperty(derivedCtor.prototype, name, Object.getOwnPropertyDescriptor(baseCtor.prototype, name));
});
});
}
这是我用来做
intersection type
:
function extend<First, Second>(first: First, second: Second): First & Second {
const result: Partial<First & Second> = {};
for (const prop in first) {
if (first.hasOwnProperty(prop)) {
(<First>result)[prop] = first[prop];
}
}
for (const prop in second) {
if (second.hasOwnProperty(prop)) {
(<Second>result)[prop] = second[prop];
}
}
return <First & Second>result;
}
除了事实上
混入
方法接受一个数组,并且
交叉口类型
方法具体取2个值,它们最终从行为的角度表现相同。如果我有
Person
和
User
交叉口类型
或
mixin
人
用户
.
讽刺的是,这正是我想要的,但我觉得我错过了一个目标
What's the difference between mixin() and extend() in Javascript libraries
extend
在这种情况下与
交叉口类型
在TypeScript中(即使helper方法就是这样调用的)。
看看这两个助手方法
出现