Typescript无法引用工厂创建的类。 这是示例代码:
// factory.ts
export const createClass = () =>
class Model {
// ...
}
// ModelA.ts
import {createClass} from './factory';
export const ModelA = createClass();
let a: ModelA; // Cannot find name 'ModelA';
// other.ts
import {ModelA} from './ModelA';
new ModelA() // Cannot find name 'ModelA';
我在这里做什么错了?
答案 0 :(得分:2)
在ModelA.ts
export const ModelA = createClass();
export type ModelA = typeof ModelA;
编辑(Joon的积分),以供将来的读者使用
由于您无法执行上述操作,因此上述解决方案显然无效
const foo: ModelA = new ModelA()
//Type 'Model' is not assignable to type 'typeof Model'. Property 'prototype' is missing in type 'Model'.
一个在评论作品中提出的建议
export type ModelA = typeof ModelA['prototype'];
(虽然不确定为什么)。
答案 1 :(得分:2)
如果您尝试获取由函数生成的类别的保险类型,则可以使用InstanceType
条件类型。
export const createClass = () =>
class Model {
// ...
}
export const ModelA = createClass();
type ModelA = InstanceType<typeof ModelA>
let a: ModelA = new ModelA(); // ok