TypeScript类型取反

读码见意

function func(arg: number) {}
func(1)
func("zs") // ERROR Argument of type 'string' is not assignable to parameter of type 'number'.

如想要将函数参数定义为非number的其他类型,则可以这样

function func<T>(arg: T extends number ? never : T) {}
func(1) // ERROR Argument of type 'number' is not assignable to parameter of type 'never'.
func("zs")
func(true)
func([])
func({})
func(() => {})

写成一个通用的type类型

type negationType<T, U> = T extends U ? never : T
function func<T>(arg: negationType<T, number>) {}
func(1) // ERROR Argument of type 'number' is not assignable to parameter of type 'never'.
func("zs")
func(true)
func([])
func({})
func(() => {})
posted @ 2024-03-13 23:01  干徒  阅读(46)  评论(0)    收藏  举报