【问题标题】:"Definitely typed" NodeJS + Express definition file has errors“确定类型”NodeJS + Express 定义文件有错误
【发布时间】:2013-12-29 05:21:43
【问题描述】:

我正在尝试将具有 NodeJS + ExpressJS 的项目转换为 Typescript。

我从绝对类型中得到定义文件,但它们似乎有很多错误:

export interface ClientRequest extends events.NodeEventEmitter, stream.WritableStream    
{
    // Extended base methods
    write(str: string, encoding?: string, fd?: string): boolean;
    write(buffer: NodeBuffer): boolean;

    write(chunk: any, encoding?: string): void;
    end(data?: any, encoding?: string): void;
    abort(): void;
    setTimeout(timeout: number, callback?: Function): void;
    setNoDelay(noDelay?: Function): void;
    setSocketKeepAlive(enable?: boolean, initialDelay?: number): void;
}

export interface Server extends net.Server {
    // Extended base methods
    listen(port: number, host?: string, backlog?: number, listeningListener?: Function): void;
    listen(path: string, listeningListener?: Function): void;
    listen(handle: any, listeningListener?: Function): void;

    listen(port: number, host?: string, callback?: Function): void;
    close(): void;
    address(): { port: number; family: string; address: string; };
    addContext(hostName: string, credentials: {
        key: string;
        cert: string;
        ca: string;
    }): void;
    maxConnections: number;
    connections: number;
}

“write”和“listen”方法抛出错误:“Incompatible override for member of writable stream”。

在app.js文件中var app = express();函数抛出错误:方法表达式不是函数类型:

var http = require("http");
var express = require("express");
var expose = require("express-expose");
var fs = require("fs");
var formidable = require("formidable");
var upload = require('Upload');

var app = express();
var HOST = "localhost";
var PORT = 8080;

【问题讨论】:

  • 可能定义已经过时了。修复错误并向 Definitly typed 项目发出拉取请求。这就是开源的工作方式;-)

标签: node.js express definitelytyped


【解决方案1】:

'不兼容的覆盖' - 这是 webStorm 中的一个错误,请投票给WEB-10239

'方法表达式不是函数类型:'不能在 WebStorm 7.0.2 中重现

【讨论】:

  • “无法在 Webstorm 7.0.2 中重现”是什么意思。这就是我目前拥有的 webstorm 版本。就错误而言,我们可以忽略警告并继续吗?并期望它正常工作?
  • 还有一件事!你的回答很有帮助。我还在 Quora 上询问了有关如何创建 Typescript 定义文件的问题。你能试着回答一下吗?这是链接:quora.com/TypeScript/…
  • 没有工具(至少我不知道有任何工具)可以从 javascript 中创建 typescript 文件... Typescript 编译器可以从 .ts 文件中生成环境声明 (d.ts) 文件(请参阅 --declaration 选项),不能为 javascript 执行此操作。当然,作为一个肮脏的黑客,您可以尝试将您的 .js 文件重命名为 .ts ,然后使用 -declaration 选项为它们运行 typescript 编译器,但这可能会失败,因为编译器不会理解大多数 js 结构和从中提取声明
  • 另见codebelt.com/typescript/… - 从 javascript 库创建 d.ts 文件的教程。另请注意,您可以在github.com/borisyankov/DefinitelyTyped 找到大多数流行库的 d.ts 文件
  • 谢谢。那很有帮助。我从Definite Typed 那里得到了一些文件——尤其是对于NodeJS 和Expres,这导致了一些错误。我问了一个关于这个的问题,也许你可以回答:stackoverflow.com/questions/20542254/… - 再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-03
  • 2017-06-01
  • 2019-03-26
  • 2020-04-13
  • 2017-11-16
  • 2014-04-24
  • 2019-05-31
相关资源
最近更新 更多