TypeScript 类型安全与非健全性问题解析
1. 避免污染全局作用域的类型断言方法
在处理全局作用域时,使用更窄的类型断言是一种不错的选择,它可以避免污染全局作用域。例如,我们可以定义一个新的类型来添加额外的属性,而不是使用 (window as any) :
type MyWindow = (typeof window) & {
/** The currently logged-in user */
user: User | undefined;
}
document.addEventListener("DOMContentLoaded", async () => {
const response = await fetch('/api/users/current-user');
const user = (await response.json()) as User;
(window as MyWindow).user = user; // OK
});
// ...
export function greetUser() {
alert(`Hello ${(window as MyWindow).user.name}!`);
// ~~~~~~~~~~~~~~~~~~~~~~~~~ Object is possibly 'undefined'.
}
这种方法的优点在于,TypeScript 可以接受这种类型断言,因为 Window 和 M
TypeScript类型安全与非健全性解析
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



