在 Visual Studio 中导入 DefinitelyTyped 模块

Importing DefinitelyTyped modules in Visual Studio

我熟悉 typescript 中的引用标签,但是 none 明确类型的模块似乎真的可以在浏览器中本地工作,如果我使用 'import' 标签来制作智能感知它会生成用于创建模块的无关代码(我假设与 node.js 一起使用?)因此我在浏览器中遇到异常。

///<reference path='paper/paper.d.ts' />

//import paper = require('paper'); //This makes intellisense work

paper.setup(<HTMLCanvasElement>document.getElementById("#my-canvas"));

var path = new paper.Path();
path.strokeColor = 'black';

var start = new paper.Point(100, 100);
path.moveTo(start);
path.lineTo(start.add([200, -50]));
paper.view.draw();

这是生成的文件,其中保留了一条 require 语句……这在浏览器中没有任何意义。知道如何避免这种情况发生吗?

"use strict";
///<reference path='paper/paper.d.ts' />
Object.defineProperty(exports, "__esModule", { value: true }); 
var paper = require("paper"); //Garbage that causes exceptions
paper.setup(document.getElementById("#my-canvas"));
var path = new paper.Path();
path.strokeColor = 'black';
var start = new paper.Point(100, 100);
path.moveTo(start);
path.lineTo(start.add([200, -50]));
paper.view.draw();
//# sourceMappingURL=app.js.map

您可以使用 UMD,又名 as namespace 技巧:

// custom-typings/paper.d.ts
import * from 'paper'
export as namespace paper

// tsconfig.json
{
  "include": {
    "custom-typings"
  }
}