我有以下逻辑:
interface ResultBase {
readonly success: boolean
}
type Result<Payload = undefined> = ResultBase & (Payload extends undefined ? {
readonly payload?: unknown
} : {
readonly payload: Payload
})
function getResult<Payload = undefined>(payload: Payload): Result<Payload> {
return {
// ^^^^^^
success: true,
payload,
}
}
100.
带下划线的标记为return
的语句带有编译器错误:
Type '{ success: true; payload: Payload; }' is not assignable to type 'Result<Payload>'.
Type '{ success: true; payload: Payload; }' is not assignable to type 'Payload extends undefined ? { readonly payload?: unknown; } : { readonly payload: Payload; }'.
我想知道,为什么错误消息中的条件类型不包括success
属性?难道它不应该被包括在ResultBase & …
中吗?