我正在尝试将一段代码转换为TypeScript,但是我遇到了一个Buffer
与UDP套接字一起使用的问题。
我正在使用的代码如下所示:
/// <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()
要求aNodeBuffer
作为第一个参数的事实,而我正在提供a 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套接字发送的缓冲区?
该问题是由于在WebStorm的JavaScript设置中启用了Node.js v0.8.16核心模块库引起的。
WebStorm在Buffer
实际上是哪种类型上感到困惑。禁用该库将解决错误提示。
遗憾的是,这对我们来说不是一个真正的选择,因为该项目同时使用带有JavaScript的Node.js和TypeScript代码。但是至少我现在知道了问题所在。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句