在TypeScript中创建“假”新类型

时间:2018-01-01 05:06:49

标签: typescript

我有很多函数接受ID作为参数(目前类型为string)。

我想用类型ID替换它,它仍然只是一个字符串,但允许我利用静态检查来确保我正确传递参数。

1 个答案:

答案 0 :(得分:0)

不确定为什么要使ID等效于字符串。

在任何情况下,您要么都想使用字符串-从打字稿的角度来看,它们是不同的,因为您只是在重用相同的确切类型。做类似的事情:

type ID = string

将无济于事,因为字符串仍然有效。即使这样,您也不能使用有效的“ typeof”,因为:

type ID = string;

class WorkWithIDs {
    public alertID(data: ID) {
        alert(typeof (data));
    }
} 

let testWorkWithIDs = new WorkWithIDs();
let actualID: ID;
testWorkWithIDs.alertID("dsfsdf");
testWorkWithIDs.alertID(actualID);

警报:  -字符串  -未定义

用您自己的话说,ID现在是一个字符串。为什么不使用名为“ ID”的常规类,您可以扩展所需的所有类并且已经可以进行类型检查了?

据我所知,目前没有任何方法可以使用Typescript提供的工具来做您想做的事情,即使另一种类型的类型确实强制该基本类型不能用作输入。