我有一个接口 AppState,并且我希望能够针对这个主 appstate 接口的子集进行编码,以便我只提取将由管道中更上方的控制器类填充的属性。最终我希望能够使用 FooAppStateSubset 进行“连接”,这样在开发时我们就可以轻松地挑选出与网站当前部分相关并设置的道具。
我怎样才能确保...
型号:
interface AppState {
email: string;
userId: number;
firstName?: string;
isAwesome: boolean;
}
interface/type FooAppStateSubset {
isAwesome: boolean;
firstName?: string;
}
如果您只有几个属性,最简单的方法是:
type FooAppStateSubset = Omit<Omit<AppState, 'email'>, 'userId'>
也许是打字员?
function isSubset(something: AppState | FooAppStateSubset): something is FooAppStateSubset {
return !('email' in something || 'userId' in something);
}
const foo = { isAwesome: true };
isSubset(foo) && console.log(foo.email); // error!