Typescript数组是null安全的

时间:2015-12-18 09:44:26

标签: typescript

假设我有这样的代码:

function concat(a: string, b: string):string {
    return a + b;
}

function firstPlusWorld(items: string[]):string {
    return concat(items[0], ' World');
}

console.log(firstPlusWorld([]));

在这种情况下,打字稿不会认为传递给concat的第一个参数不是字符串。

在功能区中有Maybe类型,head函数具有类型签名

head :: List a -> Maybe a

有没有办法让打字稿处理这种情况?

2 个答案:

答案 0 :(得分:1)

不幸的是,您将不得不求助于良好/旧if测试。在这方面,Typescript不会向javascript添加任何内容。

有一些尝试可以将Monads带到Javascript(和扩展名的Typescript),例如:https://github.com/fantasyland/fantasy-landhttps://github.com/fantasyland用于实现)

我在这个阶段仍然感到沮丧,如果有人找到一个好的库,我会很高兴跳过它并为它编写打字稿定义文件,如果需要的话。

在数据结构和不变性方面,使用Immutable.js的事情要好一些,但将结构包装在Monads中会很好,因此可以更好地对它们进行操作。

答案 1 :(得分:0)

实际上,string作为TypeScript类型也可以接受null

function concat(a: string, b: string):string {
    return a + b;
}

concat(null, null);

这会回答你的问题吗?