我想了解为什么类型S1
是never
,但是当我删除label
或customRef
属性时,我得到了正确的string
结果。当我删除value
和label
属性时,我会得到一个unknown
结果。
export interface BaseInputProps<TStored> {
value: TStored;
customRef?: (selfProps: this) => void;
}
export interface TestInput extends BaseInputProps<string> {
label: string;
}
type InferStoredType<T> = T extends BaseInputProps<infer TT> ? TT : never;
type S1 = InferStoredType<TestInput>;
这里发生了什么?
Typescript版本为3.7.5。在Typescript playground上的工作方式相同。
T extends BaseInputProps<infer TT>
成立。 - cauchy