Node 需要的 TypeScript 类型信息

Use*_*842 1 node.js typescript

我创建了一个节点服务器:

function createHttpServer(app) {
    var http = require('http');
    var server = http.createServer(app);
    return server;
}
Run Code Online (Sandbox Code Playgroud)

我正在将我们的.js代码迁移到.ts代码中,我注意到当扩展名是 时.js,我获得了 的类型信息createServer。然而,当我切换到.ts它时,它就变成了any,所以我很难正确输入。

这就是我的tsconfig.json文件的样子:

{
    "compileOnSave": false,
    "compilerOptions": {
        "allowJs": true,
        "outDir": "./out-tsc",
        "sourceMap": true,
        "declaration": false,
        "moduleResolution": "node",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "target": "es6",
        "types": [
            "node"
        ],
        "lib": ["es6"],
        "module": "commonjs",
        "pretty": true,
        "allowSyntheticDefaultImports": true
    }
}
Run Code Online (Sandbox Code Playgroud)

尽管有这些node类型,为什么我得到的any不是正确的类型信息?

小智 5

尝试使用import而不是require

import * as http from "http";

function createHttpServer(app) {
  // var http = require("http");
  var server = http.createServer(app);
  return server;
}
Run Code Online (Sandbox Code Playgroud)