无法分配到'布尔'因为它是常量或只读属性

时间:2017-06-07 16:51:23

标签: typescript

我正在创建一个typescript对象来表示我的应用程序中的读/写权限,但是我在分配对我没有意义的变量时遇到了这个怪癖。希望有人可以看看这个并告诉我我做错了什么。

export class Permission {
       watcher:Object =  { read:Boolean = true};
}

之前的代码会导致错误:

[ts]无法分配到'布尔'因为它是常量或只读属性。 const Boolean:BooleanConstructor

我可能只是在做一些愚蠢的事情,所以如果这是超级新手,请提前道歉。

2 个答案:

答案 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

如果您想要其他对象的可选变量或依赖项,则需要更复杂对象的接口。 对于小对象,打字稿将按类型理解结构。