TypeScript中如何定义静态变量及指定常量数组为元组类型?
定义常量元组避免代码重复
要让TypeScript将数组推断为固定值的元组类型,最简洁的方式是使用as const类型断言,无需重复书写类型:
const arr = ["a", "b"] as const;
此时arr的类型会被推断为readonly ["a", "b"],完全符合固定值元组的需求。如果需要复用这个类型,可以通过typeof提取:
type FixedTuple = typeof arr; // 后续可直接使用该类型 const anotherArr: FixedTuple = ["a", "b"];
如果不需要只读限制,可通过展开运算符转为可变元组类型:
type MutableFixedTuple = [...typeof arr]; const mutableArr: MutableFixedTuple = ["a", "b"]; mutableArr[0] = "c"; // 此时允许修改元素
TypeScript中定义静态变量
静态变量指属于类/模块本身而非实例的变量,TypeScript中有两种常用定义方式:
类中的静态变量
使用static关键字声明,变量归属类本身,无需实例化即可访问:
class Config { // 可修改的静态变量 static apiUrl = "https://example.com/api"; // 只读静态变量(推荐用于固定常量) static readonly maxRetryTimes = 3; } // 访问方式 console.log(Config.apiUrl); console.log(Config.maxRetryTimes);
模块级静态变量
直接在模块中用const或export const声明,模块加载时仅初始化一次,相当于模块级静态变量:
// utils.ts export const DEFAULT_TIMEOUT = 5000; export const SUCCESS_CODES = [200, 201] as const; // 其他文件中使用 import { DEFAULT_TIMEOUT } from "./utils";
这种方式适合不需要类结构的场景,是日常开发中最常用的静态变量定义方式。
内容的提问来源于stack exchange,提问作者masinnlos
相关产品推荐
相关产品推荐

