【发布时间】:2014-01-21 19:38:00
【问题描述】:
我正在尝试将一段代码转换为 TypeScript,但我遇到了与 UDP 套接字一起使用的 Buffer 的问题。
我正在使用的代码如下所示:
/// <reference path="../node_modules/DefinitelyTyped/node/node.d.ts" />
import dgram = require( "dgram" );
var udpServer:dgram.Socket = dgram.createSocket( "udp4" );
var message = new Buffer( "foo" );
udpServer.send( message, 0, message.length, 1337, "255.255.255.255" );
WebStorm 抱怨 message 错误为 Argument type Buffer is not assignable to argument type NodeBuffer。
我知道这是因为Socket.send() 需要NodeBuffer 作为第一个参数,而我提供了Buffer。但是我该如何克服呢?
我不能使用NodeBuffer 作为message 的类型,这只会导致不同的错误。
var message:NodeBuffer = new Buffer( "foo" );
会导致Initializer type Buffer is not assignable to variable type NodeBuffer
var message:NodeBuffer = new NodeBuffer( "foo" );
会导向Argument types do not match parameters。
这让我很困惑,因为 http://nodejs.org/api/dgram.html 给出的示例在纯 JavaScript 中对我有用。
那么,我该如何正确地构造一个可以通过我的 UDP 套接字发送的缓冲区?
【问题讨论】:
-
您的
node.d.ts是最新的吗?它应该有类似 github.com/borisyankov/DefinitelyTyped/blob/… 的这些行定义new Buffer返回一个NodeBuffer? -
@loganfsmyth 是的,我昨天直接从 GitHub 克隆了它。我也看到了那个声明,它让我对 IDE 中的投诉更加困惑。
-
@loganfsmyth:我猜这是 WebStorm 中的一个错误,因为代码 编译 就好了。我将其报告为WEB-10488。
标签: node.js typescript webstorm definitelytyped