打字稿找不到名字

TypeScript cannot find name

models.d.ts [mongoose.d.ts]

/// <reference path='./../../typings/mongoose/mongoose.d.ts' />

import * as mongoose from 'mongoose';

// Tried `V0`, `V1`, `V2`, `V3` independently. None worked.

/* V0 */
export interface Foo extends mongoose.Document {
    name: string;
}

models.ts

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

import * as mongoose from 'mongoose';

export function Foo(model): Foo.Foo /* also tried `Foo` and `models.Foo` */ {
    return mongoose.model('Foo', new mongoose.Schema({
        name: String
    }));
}

More context + attempts (gist).

错误

Cannot find name 'Foo'

如您所见,我什至包括了 reference pathtsconfig.json,但无济于事。如何导入?

避免在外部模块中使用 reference 标签。

干脆去掉reference标签,全部写在models.ts

import * as mongoose from 'mongoose';

export interface IFoo extends mongoose.Document {
    name: string;
}

export var Foo: mongoose.Model<IFoo> =
    mongoose.model<IFoo>('Foo', new mongoose.Schema({
        name: String
    }));

var foo0: IFoo = new Foo();

或 foo.ts

中的外部模块 foo
export interface Foo extends mongoose.Document {
    name: string;
}

并将其导入 models.ts

import * as mongoose from 'mongoose';
import * as foo from './foo';

export const Foo: mongoose.Model<foo.Foo> =
    mongoose.model<foo.Foo>('Foo', new mongoose.Schema({
        name: String
    }));