【TypeScript】TS类型断言-类型的声明和转换
// 定义一个联合类型
type NetworkLoadingStatus = "LOADING" | "SUCCESS" | "FAILURE";
// 定义一个使用联合类型的对象类型
type NetworkAction<T> = {
type: NetworkLoadingStatus;
payload: T;
};
// 定义一个用于测试的action类型
type TestAction = NetworkAction<{ test: string }>;
// 使用类型断言来获取action的payload
function getPayload<A extends NetworkAction<any>>(action: A): A['payload'] {
return (action as NetworkAction<any>).payload; // 使用类型断言获取payload
}
// 测试函数
const testAction: TestAction = {
type: "LOADING",
payload: { test: "test" }
};
// 获取并使用payload
const testPayload = getPayload(testAction);
console.log(testPayload.test); // 输出: test
这段代码定义了一个联合类型NetworkLoadingStatus
和一个使用该联合类型的对象类型NetworkAction
。然后定义了一个函数getPayload
,它接受一个泛型类型A
,并使用类型断言来访问该泛型对象的payload
属性。最后,我们创建了一个TestAction
对象,并使用getPayload
函数来获取和打印它的payload
。这个例子展示了如何在TypeScript中使用类型断言来进行类型的声明和转换。
评论已关闭