ОК, поэтому ответ был довольно простым. В основном я сделал 2 ошибки
- Я не объявил модуль, содержащий интерфейс, который я хочу расширить
- Я не добавил typeRoots в tsconfig CompilerOptions («include» из моего вопроса не имеет значения для этого)
1 - Набор текста (пн goose .d.ts)
Я создал пн goose .d.ts (имя не является важно, но я предпочитаю называть его как модуль, который я расширяю) файл в . / src / types . Здесь я расширяю свои интерфейсы следующим образом:
mon goose .d.ts
interface SpecialOptions {
verySpecialStuff: string
enable: boolean
}
declare module 'mongoose' {
export interface ModelOptions {
MyNewKey: SpecialOptions
}
}
Это расширит существующий интерфейс ModelOptions в mon goose на MyNewKey
2 - Настройка компилятора
По умолчанию компилятор просто проверяет ./node_modules/@types на наличие типов. Таким образом, вы должны указать, чтобы он также включал ваши пользовательские типы. Для этого параметры компилятора должны быть расширены следующим образом:
tsconfig. json
{
// ...
"compilerOptions" : {
// ...
"typeRoots" : [
"src/types",
"node_modules/@types"
]
}
}