【发布时间】:2020-09-09 14:28:37
【问题描述】:
[我想要]
interface T {
a?: string;
b?: number;
c?: boolean;
d?: object;
e?: null;
}
type A = {
a: string;
b: number;
q: string; // not exist in type T
}
type B = {
a: string;
b: number;
}
type G<U extends T> = {
data: U;
creator: () => void;
}
const someFunc = <U>(data: U): G<U> => {
return {
data,
creator: () => { console.log(data ) }
}
}
const funcA = (data: A) => {
const something = someFunc<A>(data); // I want to occur error
}
const funcB = (data: B) => {
const something = someFunc<B>(data); // I want to do well
}
类型“T”具有可选属性(每个属性)。
一个类型是类型“T”的子集(是“B”)
另一个不是“T”类型的子集(是“A” - 具有属性“q”)
但是,使用类型“B”不会发生错误。
怎么办?
谢谢。
【问题讨论】:
标签: typescript generics