首页 > 解决方案 > 从对象属性设置变量的类型

问题描述

我正在尝试将变量的类型设置为对象的属性,例如下面的代码。

class Foo {

}

const obj = {
  Foo,
};

const foo: Foo; // valid
const bar: obj.Foo; // Cannot find namespace 'obj'.

这给了我错误Cannot find namespace 'obj'。有没有办法从对象属性设置变量的类型,例如foobar的类型Foo

标签: typescript

解决方案


无法将类型添加到对象类型。您可以做的最接近的事情是使用命名空间定义。命名空间可以同时具有变量和类型。命名空间在运行时表示为一个对象,因此它可能足够接近您的需要:

class Foo {

}
type _Foo = Foo;
const _Foo = Foo;
namespace obj {
    export type Foo = _Foo;
    export const Foo = _Foo; // to allow instantiation through obj.Foo
};

const foo: Foo; // valid
const bar: obj.Foo = new obj.Foo()

推荐阅读