类型
Result
null
从
data
interface Result { data: string | null; }
function doStuff(
input: Result,
cb: (str: { data: Exclude<Result['data'], null> }) => void
): void {
if (input.data) {
cb({data: input.data});
}
}
doStuff({data: "x"}, (result) => {
alert(result.data.length);
});
您甚至可以创建一个排除
从特定类型成员。如果您的接口有更多的成员,这将非常有用:
interface Result { data: string | null; }
type RemoveNullFrom<T, TKey extends keyof T> = Pick<T, Exclude<keyof T, TKey>> & {
[P in TKey] : Exclude<T[P], null>
}
function doStuff(
input: Result,
cb: (str: RemoveNullFrom<Result, 'data'>) => void
): void {
if (input.data) {
cb({data: input.data});
}
}
doStuff({data: "x"}, (result) => {
alert(result.data.length);
});