首页 > 解决方案 > 强制执行可选类型打字稿

问题描述

有没有办法强制一个函数只能用可选类型调用

其中 Optional 定义为

type Optional<T> = T | undefined

我想定义一个函数 f 以便

declare type Foo = { foo: string }
declare var x: Optional<Foo>
declare var y: Foo

f(x) // ts typecheck ok
f(y) // ts typecheck ko 

标签: typescript

解决方案


据我所知,这是有效的:

declare function f<T>(v:Optional<T> extends T ? T : never) : any;

这里的游乐场


推荐阅读