You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中如何检测代码是否运行在浏览器环境?

正确检测浏览器环境的TypeScript实现

原ES5代码在TypeScript中失效的核心原因有两点:

  1. TypeScript默认启用"use strict",立即执行函数(IIFE)中的this会被绑定为undefined,无法和window做等值比较
  2. 未明确this的类型,触发TypeScript的隐式any类型报错

推荐实现方式

直接检测全局作用域中是否存在window对象,同时通过类型检查规避TypeScript的类型报错:

const isBrowser = typeof window !== 'undefined' && window instanceof Window;

如果不需要极致严谨的环境校验,也可以使用更简洁的版本(适配绝大多数场景):

const isBrowser = typeof window !== 'undefined';

补充说明

  • 这种写法不依赖this的指向,完全不受严格模式影响
  • 通过typeof window的检查,TypeScript会自动推断后续window的类型为Window | undefined,结合instanceof Window可进一步确认环境的正确性
  • 该方案能兼容Node.js、Web Worker等非浏览器运行环境,适用性更广

内容的提问来源于stack exchange,提问作者jcubic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 13:24:46