WebXR 打字稿支持

WebXR typescript support

我想尝试使用 webxr 并设置了一个 typescript 项目。根据WebXR

我应该做以下事情:

const supported = await navigator.xr.isSessionSupported('immersive-vr');

使用我的打字稿设置 navigator.xr 显示为错误。

我想知道如何为 webxr 设置打字稿。我的 tsconfig 看起来像这样:

{
    "compilerOptions": {
        "outDir": "./dist/",
        "noImplicitAny": true,
        "module": "esNext",
        "target": "es6",
        "allowJs": true,
        "moduleResolution": "node"
    },
    "exclude": [
        "./node_modules"
    ],
}

您需要 add definitions for WebXR, such as these ones. 类似 运行 的东西:npm install --save-dev @types/webxr 然后导入类型:

import type { Navigator } from 'webxr';

相关:

在命令行中使用 npm i -D @types/webxr 安装 webxr 的类型。

然后使用 import type { XRSystem } from 'webxr'; 在您的 ts 文件中导入 XRSystem(注意导入中的 type 字词)。

然后调用 xr:

const xr = (navigator as any)?.xr as XRSystem;
xr.requestSession('immersive-vr', {optionalFeatures: ['hand-tracking']})