TypeScript не находит определения
У меня есть следующая структура файла:
+ 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 (версия 0.10.6) эта строка сразу выделяется с ошибкой "Не удается найти пространство имен" sequelize "".
var Sequelize:sequelize.SequelizeStatic = require('sequelize');
^^^^^^^^^
Несмотря на то, что sequelize.d.ts успешно находится в начале файла с: /// <reference path="../../typings/sequelize/sequelize.d.ts" />
1 ответ
Приведенный выше "сокращенный" пример работает, если модуль 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'
;