【问题标题】:Referring to types in *.d.ts files引用 *.d.ts 文件中的类型
【发布时间】:2016-04-21 01:34:01
【问题描述】:

我正在学习 TypeScript,并且正在使用 node.js 和 ws 构建一个小型示例应用程序。我已经下载了两者的定义文件。 node.js 的文件似乎工作正常。我不知道如何使用 ws.d.ts 文件中的类型。

ws.d.ts 文件来自绝对类型:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/ws/ws.d.ts

我的脚本的重要部分是:

/// <reference path="typings/node/node.d.ts" />
/// <reference path="typings/ws/ws.d.ts" />

(function(){
    const WebSocketServer = require('ws').Server;

    // does things here

}());

脚本运行良好,但我无法添加类型信息。我试过了:

const WebSocketServer: ws.WebSocket.Server = require('ws').Server;

const WebSocketServer: WebSocket.Server = require('ws').Server;

const WebSocketServer: Server = require('ws').Server;

...但是编译器总是抱怨它找不到名称“ws/WebSocket/Server” - 以名称的第一部分为准。

如何引用 d.ts 文件中定义的类型?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    你可以这样写:

    import * as websockets from 'ws';
    

    然后:

    let wsServer = new websockets.Server({ port: 1234 });
    wsServer.on('connection', (client) => 
    {
     ....
    

    【讨论】:

      【解决方案2】:

      终于搞定了,你需要这样做:

      import ws = require('ws');
      

      在您的代码中,并使用 --module commonjs 标志运行 tsc.exe。如果您使用 Sublime Text 并希望它与他们的 Typescript 插件一起使用,您必须在您的目录中放置一个 tsconfig.json:

      {
          "compilerOptions": {
              "module": "commonjs"
          }
      }
      

      ...并通过Package Control安装Arctic Typescript插件,因为默认的只是不玩球。

      【讨论】:

        猜你喜欢
        • 2016-02-15
        • 2016-07-23
        • 2020-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-18
        • 2020-01-24
        相关资源
        最近更新 更多