我正在使用JSDoc为我的JavaScript提供一些基本类型。它工作正常,使智能感知成为非常有用的体验。 但是,javascript仍然是javascript,我更喜欢在常量代码上使用常量而不是字符串。但是,当我尝试构建一个对所有可能值进行“分组”的对象时,我无法正确键入它或将其用于返回已定义类型的函数。 让我用一个例子来解释它
<script type="text/javascript">
window.onload = function () {
var val = '@(ViewBag.Lon)';
document.getElementById("demo").innerHTML = val;
}
</script>
<h3 id="demo" >Passing Data From Controller to View using ViewBag</h3>
在这种情况下,我在TaskStatus对象的第一行出现以下错误
/**
* @typedef {'running'|'stopped'|'running'|'not-started'} Status
*/
export const TaskStatus = {
/** @type {'stopped'} */
STOPPED: 'stopped',
PAUSED: 'paused',
RUNNING: 'running',
NOT_STARTED: 'not-started'
};
如果我尝试键入一个期望使用对象上的常量返回此定义类型的函数,则会出现相同的错误:
Type 'string' is not assignable to type '"stopped"'.ts(2322)
如何使用刚刚定义的类型键入字符串?它们是与指定值匹配的字符串,那怎么了?