【发布时间】:2018-10-24 18:54:27
【问题描述】:
我正在尝试在 TypeScript 3.x 中实现子类工厂模式。 考虑这个测试:
import { expect } from 'chai'
describe('subclass factory', () => {
it('should work', () => {
interface INameable {
name?: string
}
const name = 'I am a Nameable!'
function nameableSubclassOf<T> (superclass) {
return class extends superclass implements INameable {
name?: string = name
}
}
class Foo {}
const NameableFoo = nameableSubclassOf(Foo)
const nameableFoo = new NameableFoo()
expect(nameableFoo).to.be.instanceOf(Foo)
expect(nameableFoo.name).to.be.ok
expect(nameableFoo.name).to.equal(name)
})
})
编译失败并显示以下消息:
TSError:⨯ 无法编译 TypeScript:
src/test/subclass-factory.ts(11,37):错误 TS7006:参数“超类”隐含地具有“任何”类型。
如何更改上述代码以成功编译并返回class,它是T 的子类,同时声明它实现了INameable?
【问题讨论】:
标签: typescript subclass factory