我正在创建一个typescript对象来表示我的应用程序中的读/写权限,但是我在分配对我没有意义的变量时遇到了这个怪癖。希望有人可以看看这个并告诉我我做错了什么。
export class Permission {
watcher:Object = { read:Boolean = true};
}
之前的代码会导致错误:
[ts]无法分配到'布尔'因为它是常量或只读属性。 const Boolean:BooleanConstructor
我可能只是在做一些愚蠢的事情,所以如果这是超级新手,请提前道歉。
答案 0 :(得分:2)
如果您打算将watcher
属性键入属性为read
的对象,则应键入以下内容:
export class Permission {
// The part after the ":" is the type definition of the property.
// The part after "=" is its value
watcher: {
read: boolean
} = { read: true };
}
您目前拥有的可能是语法错误。您可能不希望使用Boolean
Boolean = true
答案 1 :(得分:1)
您正在尝试使用true
分配JSON对象,将其声明为类型布尔值只是多余的(因为false
和{
key: value,
key2: value2
}
始终是布尔值)typescript会推断出类型,并且& #39;是一个无效的JSON结构。
JSON具有以下格式:
export class Permission {
watcher = { read: true };
}
请注意,JSON中没有等号( = ),只有 : 来分隔键和值。
现在我看到类语法让你感到困惑,因为它确实有一个等号,但它只适用于赋值。完成作业后,您不需要有等号。
您的最终课程定义应如下所示:
ng-app
如果您想要其他对象的可选变量或依赖项,则需要更复杂对象的接口。 对于小对象,打字稿将按类型理解结构。