相关疑难解决方法(0)

在定义文件中导入类(*d.ts)

我想扩展Express Session类型以允许在会话存储中使用我的自定义数据.我有一个对象req.session.user是我班级的一个实例User:

export class User {
    public login: string;
    public hashedPassword: string;

    constructor(login?: string, password?: string) {
        this.login = login || "" ;
        this.hashedPassword = password ? UserHelper.hashPassword(password) : "";
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我创建了我的own.d.ts文件以将定义与现有的快速会话类型合并:

import { User } from "./models/user";

declare module Express {
    export interface Session {
        user: User;
    }
}
Run Code Online (Sandbox Code Playgroud)

但它根本不起作用 - VS Code和tsc看不到它.所以我用简单的类型创建了测试定义:

declare module Express {
    export interface Session {
        test: string;
    }
}
Run Code Online (Sandbox Code Playgroud)

并且测试字段工作正常,因此导入导致问题.

我也尝试添加/// <reference path='models/user.ts'/>导入但是tsc没有看到User类 - …

typescript typescript-typings

50
推荐指数
4
解决办法
2万
查看次数

如何将外部类型导入全局.d.ts文件

我正在使用Moment.js处理TypeScript项目中的日期时间对象。我想定义一个对象类型,该对象类型的键的类型值为Moment。

但是,当我将以下内容添加到全局定义文件(test.d.ts)时,在项目中的任何位置都找不到该文件中的接口。

import { Moment } from 'moment';

interface Test {
  date: Moment;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试在.ts或.tsx文件中使用接口时,出现此TypeScript错误:

[at-loader] ./src/<examplefilename>.tsx:91:26 
    TS2304: Cannot find name 'Test'. 
Run Code Online (Sandbox Code Playgroud)

VSCode的TypeScript错误检查和TSLint均未显示该代码的任何问题。

如何从外部模块导入类型以在全局定义文件中使用?

momentjs typescript typescript2.0

4
推荐指数
3
解决办法
4749
查看次数