Node.js 在TypeScript中使用instanceof
考虑以下基本节点+ts代码:Node.js 在TypeScript中使用instanceof,node.js,typescript,express,Node.js,Typescript,Express,考虑以下基本节点+ts代码: import * as express from "express"; function doStuff(app: express.Application) { if (!(app instanceof express.Application)) throw new TypeError(); // etc... } VSCode为我显示了express.Application……instanceof express.Application…的此错误: [
import * as express from "express";
function doStuff(app: express.Application) {
if (!(app instanceof express.Application)) throw new TypeError();
// etc...
}
VSCode为我显示了express.Application……instanceof express.Application…
的此错误:
[ts]属性“Application”在类型“typeof e”上不存在。[2339]
我做错了什么?instanceof是一个Javascript操作符。右侧操作数必须是运行时值(函数或构造函数),才能正常工作
express.应用程序
被定义为一个接口。接口仅在编译时存在,以帮助进行类型检查。这意味着在运行时,instanceof
操作中没有express.Application
值作为操作数,因此typescript会发出错误。instanceof
是一个Javascript操作符。右侧操作数必须是运行时值(函数或构造函数),才能正常工作
express.应用程序
被定义为一个接口。接口仅在编译时存在,以帮助进行类型检查。这意味着在运行时,instanceof
操作中没有express.Application
值作为操作数,因此typescript会发出错误。谢谢,这是有意义的。我可以使用duck输入来获得相同的结果,尽管这很麻烦。。。有其他选择吗?@Ionix由于类型已定义,您只能检查是否存在特定属性,这是有意义的。我可以使用duck输入来获得相同的结果,尽管这很麻烦。。。有其他选择吗?@Ionix定义类型后,您只能检查是否存在特定属性