TypeScript require with type checking

二次信任 提交于 2019-12-20 02:44:44

问题


I am using TypeScript v1.4.1 and would like to require an external module (in this case "chai") and have it be type checked.

However, I am running into some sort of naming conflict with this code:

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

var chai = require("chai");

var expect = chai.expect;
var assert = chai.assert;

describe("TEST", () =>
{
   it("true should be true", (done)=>
   {
      expect(true).to.be.true;
      done();
   });
});

With this definition file:

declare module chai {
   ...
}
declare module "chai" {
   export = chai;
}

Compiling gives these errors:

test/test.ts(5,5): error TS2300: Duplicate identifier 'chai'.
typings/chai/chai.d.ts(6,16): error TS2300: Duplicate identifier 'chai'.

It seems my only option is rename my chai variable name in test.ts. That seems clunky AND won't type check the use of the renamed chai variable.

Any advice?


回答1:


Use the import keyword with require instead of var

import chai = require('chai');

And compile with --module commonjs if you're not already

Or, if for some reason you don't want the test code to be an external module, adding a type annotation will preserve type checking.

var c: typeof chai = require("chai");


来源:https://stackoverflow.com/questions/28547970/typescript-require-with-type-checking

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!