"typeof" in members in TypeScript typings 的目的是什么?
What is the purpose of "typeof" in members in TypeScript typings?
Electron typescript 定义包含以下接口:
interface MainInterface extends CommonInterface {
// I understand these
app: App;
autoUpdater: AutoUpdater;
// But not these
BrowserView: typeof BrowserView;
BrowserWindow: typeof BrowserWindow;
ClientRequest: typeof ClientRequest;
...
}
在这种情况下,typeof XX
是什么意思? AFAIK typeof
returns 类型的字符串名称,例如以上相当于
BrowserView: "BrowserView";
如果是这样,那么使用typeof
的成员定义的目的是什么?
如果在上面示例中的类型注释中,typeof
运算符给出值的类型。如果应用于变量,它会给出变量的类型。如果应用于 class 它给出 class 的类型(不是实例类型,而是表示 class 构造函数和静态方法的类型。
class Foo {
static method(){}
}
let foo: typeof Foo;
foo.method();
new foo()
let o = 1
let oo: typeof o
在 Typescript 中,定义一个 class 会产生两个接口:
- class界面
- 实例接口
问题是,只有实例接口获取 class 的名称。为了访问 class 接口(做类似 new MyClass()
或 MyClass.staticProperty
的事情),你必须使用 typeof
.
Electron typescript 定义包含以下接口:
interface MainInterface extends CommonInterface {
// I understand these
app: App;
autoUpdater: AutoUpdater;
// But not these
BrowserView: typeof BrowserView;
BrowserWindow: typeof BrowserWindow;
ClientRequest: typeof ClientRequest;
...
}
在这种情况下,typeof XX
是什么意思? AFAIK typeof
returns 类型的字符串名称,例如以上相当于
BrowserView: "BrowserView";
如果是这样,那么使用typeof
的成员定义的目的是什么?
如果在上面示例中的类型注释中,typeof
运算符给出值的类型。如果应用于变量,它会给出变量的类型。如果应用于 class 它给出 class 的类型(不是实例类型,而是表示 class 构造函数和静态方法的类型。
class Foo {
static method(){}
}
let foo: typeof Foo;
foo.method();
new foo()
let o = 1
let oo: typeof o
在 Typescript 中,定义一个 class 会产生两个接口:
- class界面
- 实例接口
问题是,只有实例接口获取 class 的名称。为了访问 class 接口(做类似 new MyClass()
或 MyClass.staticProperty
的事情),你必须使用 typeof
.