TypeScript判断当前操作系统

679 阅读1分钟
// 获取操作系统  
export function getOS() {  
/**  
* 直接获取,实验属性  
* @see https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData/platform#browser_compatibility  
*/  
// @ts-expect-error 仅 chromium 核心 >=93 版本支持 navigator.userAgentData.platform 属性,兼容性查看上方链接  
const platform = window.navigator?.userAgentData?.platform || window.navigator.platform  
const userAgent = window.navigator.userAgent  
  
const macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K', 'macOS']  
const windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE']  
const iosPlatforms = ['iPhone', 'iPad', 'iPod']  
  
let os: 'unknown' | 'MacOS' | 'IOS' | 'Windows' | 'Android' | 'Linux' = 'unknown'  
  
if (macosPlatforms.indexOf(platform) !== -1) {  
os = 'MacOS'  
} else if (iosPlatforms.indexOf(platform) !== -1) {  
os = 'IOS'  
} else if (windowsPlatforms.indexOf(platform) !== -1) {  
os = 'Windows'  
} else if (/Android/.test(userAgent)) {  
os = 'Android'  
} else if (/Linux/.test(platform)) {  
os = 'Linux'  
}  
  
return os  
}  
  
export const isWindows = getOS().toLowerCase() === 'windows'  
  
export const isMac = getOS().toLowerCase() === 'macos'  
  
export const isIOS = getOS().toLowerCase() === 'ios'  
  
export const isAndroid = getOS().toLowerCase() === 'android'  
  
export const isLinux = getOS().toLowerCase() === 'linux'