1

假设我有一个 test.ts 和一个 MY_MODULE.d.ts 文件:

MY_MODULE.d.ts:

module MY_MODULE 
{
    export class Config { 
        UserId : string;
    };

    export function Init( config : Config );
}

测试.ts:

/// <reference path="MY_MODULE.d.ts" />

MY_MODULE.Init(<MY_MODULE.Config>{ UserId: 'Josh' });

我的问题:是否可以修复定义文件或 .ts 文件,以便后者中的强制转换是不必要的?

4

2 回答 2

2

使用export interface Config而不是export class Config.

于 2013-03-21T14:08:09.630 回答
0

Typescript 将根据对象的签名推断正确的类型,因此不需要强制转换。
将代码复制到操场上,立即发现了几个编译错误。首先,Init 需要一个实现。
其次,Config 类没有构造函数。
以下代码编译干净:

module MY_MODULE 
{
    export class Config { 
        UserId : string;
    };

    export function Init( config : Config ) {
    }
}

var myConfig = new MY_MODULE.Config();
myConfig.UserId = 'Josh'

MY_MODULE.Init(myConfig);

最好为 Config 定义一个构造函数,如下所示:

module MY_MODULE 
{
    export class Config {
        UserId : string; 
        constructor(userId : string) {
            this.UserId = userId;
        }
    };
    export function Init( config : Config ) {
    }
}

MY_MODULE.Init(new MY_MODULE.Config('Josh'));
于 2013-03-21T14:23:43.427 回答