1

我有以下文件结构:

+ src
|  test.ts
|  z_module.d.ts
tsconfig.json

test.ts

// does nothing?
/// <reference path="./z_module.d.ts" />
// can't now write:
var a: zzrm.zzrmObject;

// have to use:    
import * as zzrm from 'zzrm';
var a: zzrm.zzrmObject;

z_module.d.ts

declare module "zzrm" {
  export interface zzrmObject {id: string}
}

我试图减少问题,但很可能错误地减少了它。问题最初来自尝试使用 sequelize-auto-ts。 下载 repo升级 sequelize.d.ts并在 Visual Studio Code(版本 0.10.6)中打开会立即突出显示此行并显示错误“找不到命名空间 'sequelize'”。

var Sequelize:sequelize.SequelizeStatic = require('sequelize');
              ^^^^^^^^^

即使sequelize.d.ts在文件顶部成功引用:/// <reference path="../../typings/sequelize/sequelize.d.ts" />

4

1 回答 1

0

如果 zzrm 模块声明时不带引号,则上述“简化”示例有效:

declare module zzrm {
  export interface zzrmObject {id: string}
}

当我更新 sequelize.d.ts 时,我没有注意到模块声明已从

declare module sequelize { ... }

declare module "sequelize" { ... }

这在“环境外部模块”下的 TypeScript 文档中有所提及,但我还没有弄清楚这些部分是如何组合在一起的,以及为什么它们还需要您添加import * as zzrm from 'z_module'

于 2016-02-06T22:45:55.927 回答