我在演示文稿中看到过如何在SAPUI5中使用Typescript,在示例代码中,它是这样的:
sap.ui.define(["sap/ui/core/UIComponent", "sap/m/Select"],
function(UIComponent, Select: typeof sap.m.Select) {
"use strict";
// ...
});
此上下文中typeof
关键字的含义是什么?为什么作者不是这样写的:
sap.ui.define(["sap/ui/core/UIComponent", "sap/m/Select"],
function(UIComponent, Select: sap.m.Select) {
"use strict";
// ...
});
答案 0 :(得分:3)
这是type query。在您提供的示例中,它被用作引用Select
构造函数的便捷方式,稍后可能会在内部使用它来创建新实例。
长话短说,该函数需要它的构造函数而不是你在第二个例子中写的实例。
您可以load this snippet on TS playground查看差异:
class Foo {
static fooNumber = 42
fooString = 'foo'
}
function test(instance: Foo, ctor: typeof Foo) {
console.log(instance.fooNumber) // Error
console.log(instance.fooString)
console.log(ctor.fooNumber)
console.log(ctor.fooString) // Error
let anotherInstance = new ctor()
console.log(anotherInstance.fooNumber) // Error
console.log(anotherInstance.fooString)
}