我有这个
export enum ProfileFollowingViewModelType {
Loading = 'FOLLOWING_LOADING',
FollowingLoaded = 'FOLLOWING_LOADED',
}
export type ProfileFollowingViewModel =
| {
type: ProfileFollowingViewModelType.Loading;
}
| {
type: ProfileFollowingViewModelType.FollowingLoaded;
following: {
id: string;
username: string;
profilePicture: string;
followersCount: number;
isFollowedByAuthUser: boolean;
link: string;
}[];
};
export const createProfileFollowingViewModel =
({ of }: { of: string }) =>
(rootState: AppState): ProfileFollowingViewModel => {
const areFollowingLoading = selectAreFollowingLoading(of, rootState);
const following = selectFollowingOf(of, rootState);
if (areFollowingLoading)
return { type: ProfileFollowingViewModelType.Loading };
return {
type: ProfileFollowingViewModelType.FollowingLoaded,
following: following.map((f) => {
const user = selectUser(f, rootState);
return {
id: user.id,
username: user.username,
profilePicture: user.profilePicture,
followersCount: user.followersCount,
isFollowedByAuthUser: user.isFollowedByAuthUser,
link: `/u/${f}`,
};
}),
};
};
如果我在下面的映射中添加一个不在类型声明中的自定义变量,打字稿不会对我大喊大叫
这是因为类型联合吗?或者地图循环?
两者都不是,只要你提供了至少一个必需的属性,就不应该引发错误(对你大喊大叫,哈哈)。 Typescript 使用结构类型系统 - https://www.typescriptlang.org/docs/handbook/interfaces.html