typescript 键入脚本类型显式名称,而不是错误消息中的类型

nwnhqdif  于 2023-01-18  发布在  TypeScript
关注(0)|答案(1)|浏览(141)

我希望在错误类型消息中使用userId之类的显式名称,而不是类型编号

export const primaryKey: PrimaryKey = `CONSUMPTION#123a4`; 
// Type '"CONSUMPTION#123a4"' is not assignable to type '`CONSUMPTION#${number}`'.ts(2322)

type PrimaryKey = `CONSUMPTION#${userId}`;
type userId = number;

在这个例子中,123a4是一个字符串而不是数字,错误消息是好的,但是我更希望使用userId而不是number

// Type '"CONSUMPTION#123a4"' is not assignable to type '`CONSUMPTION#${userId}`'.ts(2322)
0lvr5msh

0lvr5msh1#

恐怕您只能为函数实现自定义类型错误:

type userId = number;

type CheckIfUserId<T> = T extends userId ? T : `userId` // or any custom text here
type PrimaryKey = `CONSUMPTION#${userId}`

const createPrimaryKey = <T>(userId: CheckIfUserId<T>) => `CONSUMPTION#${userId}` as PrimaryKey

const primaryKey1 = createPrimaryKey('123a4')
// Argument of type '"123a4"' is not assignable to parameter of type '"userId"'.

const primary2 = createPrimaryKey(123)
// Passes

所以我同意上面的评论,除了args检查,在当前的(4.9)TS版本中这是不可能的。

相关问题