【问题标题】:TypeScript cannot find nameTypeScript 找不到名称
【发布时间】:2016-05-23 03:53:21
【问题描述】:

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).

错误

找不到名字'Foo'

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

【问题讨论】:

    标签: mongoose typescript definitelytyped


    【解决方案1】:

    避免在外部模块中使用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
        }));
    

    【讨论】:

    • 谢谢,我不知道语法已经从 reference 转移到 import。我以为有了tsconfig,我们就不需要reference,一切都是可见的。
    猜你喜欢
    • 2016-11-05
    • 2018-08-29
    • 1970-01-01
    • 2016-01-24
    • 2017-08-14
    • 2018-12-10
    • 2016-12-04
    • 2017-09-22
    相关资源
    最近更新 更多