我正在尝试将一段代码转换为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套接字发送的缓冲区呢?
答案 0 :(得分:0)
问题是由于在WebStorm的JavaScript设置中启用了 Node.js v0.8.16核心模块库引起的。
这个混淆的WebStorm关于Buffer
实际上是哪种类型。禁用库将解决错误提示。
可悲的是,这对我们来说并不是一个真正的选择,因为该项目将Node.js与JavaScript 和 TypeScript代码一起使用。但至少我现在知道问题所在。