字面量类型(Literal Types)是 TypeScript 中的一个特性,它允许变量或参数被限制为特定的字面量值。 字面量类型有以下几种形式:
let language: 'javascript' | 'python' | 'java';
language = 'javascript'; // 可以
language = 'python'; // 可以
language = 'ruby'; // 错误
在这个例子中,language 变量只能被赋值为 'javascript'、'python' 或 'java' 三者之一。
function getArea(shape: 'circle' | 'rectangle', width: 4 | 5, height?: 4 | 5) {
if (shape === 'circle') {
return Math.PI * width * width;
} else {
return width * (height || width);
}
}
getArea('circle', 4); // 可以
getArea('rectangle', 4, 5); // 可以
getArea('rectangle', 4, 6); // 错误
在这个例子中,getArea 函数的 shape 参数只能是 'circle' 或 'rectangle',width 和 height 参数只能是 4 或 5。
function setDirection(direction: 'left' | 'right' | 'up' | 'down') {
// ...
}
setDirection('left'); // 可以
setDirection(true); // 错误
在这个例子中,setDirection 函数的参数只能是 'left'、'right'、'up' 或 'down' 四者之一。 字面量类型的主要用途包括:
总的来说,字面量类型是 TypeScript 类型系统中的一个强大特性,可以帮助开发者编写更加安全和可维护的代码。在合适的场景下使用字面量类型,可以显著提高代码质量。