繁体   English   中英

如何在 Typescript 中将类型化变量用作具有相同名称的类型?

[英]How can I use typed variables as types with same name in Typescript?

THREE.js一起使用时,您可以为类型和代码使用相同的名称。 例如:

import * as THREE from '/build/three.module.js'

// Following line uses THREE.Scene as type and code
const scene: THREE.Scene = new THREE.Scene()

演示

试图在我自己的代码中复制相同的行为,但不知道该怎么做。 这是我尝试过的:

// typedModule.ts

export const typedConstant1: string = "string";

// Doesnt work
// declare global {
//     namespace typedModule {
//       export type typedConstant1 = typeof typedConstant1
//     }
//   }

// index.ts

import * as typedModule from "./typedModule";

const someVariable: typedModule.typedConstant1 = typedModule.typedConstant1; // ERROR: Namespace '"/sandbox/src/typedModule"' has no exported member 'typedConstant1'.ts(2694)

演示

您应该能够以与导出值相同的方式导出类型:

export const typedConstant1: string = "string";
export type typedConstant1 = typeof typedConstant1;

然后导入应该工作:

import * as typedModule from "./typedModule";

const someVariable: typedModule.typedConstant1 = typedModule.typedConstant1;
// const someVariable: string

修改后的代码框演示

TS Playground 中的类似代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM