我有以下文件结构:
+ 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。 下载存储库,升级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" />
如果声明 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'
;