我可以找到所有使用的ExpressJS和TypeScript示例
import * as express from "express";
let app = express();
app.use("/", express.static("/"));
但是,我想使用类方法:
import * as express from "express";
export class ServerApp {
private app: express.Express = express();
public configure {
this.app.use('/', express.static("/");
}
}
尝试访问私有变量的use
方法会产生参数类型警告。
我想使用强类型,因此private app: any
无效。我该如何解决这个问题,还是有更好的方法?
答案 0 :(得分:1)
根据最新的快递类型,app的类型称为Application,而不是Express。以下文件test.ts
编译得很好
import * as express from "express";
export class ServerApp {
private app: express.Application = express();
public configure() {
this.app.use('/', express.static("/"));
}
}
如果你将它放在一个空目录中并执行
npm install typescript
npm install typings
./node_modules/.bin/typings install -G dt~node
./node_modules/.bin/typings install express
./node_modules/.bin/tsc test.ts typings/index.d.ts
它会起作用。
但是,有多种方法可以为快递安装打字。如果你不需要与typescript兼容< 2.0(2.0几天前发布),你可以
npm install typescript
npm install @types/express
./node_modules/.bin/tsc test.ts
并再次起作用。如果您查看types-metadata.json
的已安装express-serve-static-core
,您会注意到它使用了DefinitelyTyped的type-2.0分支:
"sourceRepoURL": "https://www.github.com/DefinitelyTyped/DefinitelyTyped",
"sourceBranch": "types-2.0",
第三种安装方式是
../node_modules/.bin/typings install -G dt~express
这将从DefinitelyTyped的主分支中获取它,正如@Aphelion发现的那样,它包含problematic commit,它会删除许多use
重载,从而导致错误。