我有一个将字符串解析为值的函数,如果失败则返回defaultValue。问题是这段代码对原语返回的类型过于严格(例如,false而不是boolean)。我怎么才能修复它?也许我应该为defaultValue使用一些演员阵容?谢谢
export function safeParse<T>(text: string, defaultValue?: T): T | undefined {
try {
return JSON.parse(text);
} catch {
return defaultValue; // some cast here?
}
}
const res1 = safeParse('128', 0); // typeof res1 is '0 | undefined'
const res2 = safeParse<number>('128', 0); // OK: typeof res2 is 'number | undefined'
const res3 = safeParse('128', 0 as number); // OK: typeof res3 is 'number | undefined'发布于 2021-03-19 23:39:42
也许它会很有用
type StrictType<T> = T extends number
? number
: T extends string
? string
: T extends boolean
? boolean
: T
export function safeParse<T>(text: string, defaultValue?: StrictType<T>): StrictType<T> | undefined {
try {
return JSON.parse(text);
} catch {
return defaultValue; // some cast here?
}
}
const res1 = safeParse('128', 0); // typeof res1 is 'number | undefined'
const res2 = safeParse('true', false); // typeof res2 is 'boolean | undefined'https://stackoverflow.com/questions/66707372
复制相似问题