创建一个从联合类型中删除null的函数签名

时间:2017-03-15 16:12:31

标签: typescript typescript2.0

我刚开始将所有代码转换为使用strictNullChecks。我想要一个执行以下功能的功能:

function defaultValue<TUnionNull>(value: TUnionNull, default: TWithoutNull): TWithoutNUll{
    return value == null ? default : value
}

function requiresNotNullString(): void

var name: string | null;

var checkedName: string = defaultValue(name, "Fred");

换句话说,如果函数的输入是string | null,我希望返回类型为string

这可能吗?

1 个答案:

答案 0 :(得分:1)

怎么样:

function defaultValue<T>(value: T | null, defaultValue: T): T {
    return value == null ? defaultValue : value
}

(已将其更改为defaultValue,因为无法使用default

(@ example in playground由@Roaders提供)