当使用字符串字面量的联合作为输入参数时,如何移除强制转换并将类型放入函数头中:
const get = <T extends "barcode" | "mqtt">(s: T) =>
s === "barcode" ?
<T extends "barcode" ? {scan: () => string} : {pan: () => string}>{scan: () => "we are scanning"} :
<T extends "barcode" ? {scan: () => string} : {pan: () => string}>{pan: () => "we are panning"}
get("barcode").scan() // OK
get("mqtt").pan() // OK
get("barcode").pan() // Error
我遇到了这个问题,试图回答别人的问题:https://dev59.com/9ozda4cB1Zd3GeqPl2Ne#55059318。