为什么这种类型不检查,而它的变体却检查?
Why doesn't this type check, but a variation of it does?
我不确定这是否是一个错误,所以我想在这里问一下。
我的代码无法进行类型检查:
/* @flow */
declare type A = {
code: ?number;
}
var a: A = {}
但是如果我创建一个与类型 A 具有相同签名的 class 并实例化它,那么它会进行类型检查:
/* @flow */
declare type A = {
code: ?number;
}
class _A {
code: ?number;
}
var a: A = new _A();
我在第一个变体上遇到的类型检查错误是这样的:
test.js:2:19,4:2: property code
Property not found in
test.js:6:13,14: object literal
我觉得这是一个错误,但我可能是错的。
我通过重新阅读文档弄明白了。可选属性的语法不是:
{code:?number}
而是:
{code?:number}
糟糕。
我不确定这是否是一个错误,所以我想在这里问一下。
我的代码无法进行类型检查:
/* @flow */
declare type A = {
code: ?number;
}
var a: A = {}
但是如果我创建一个与类型 A 具有相同签名的 class 并实例化它,那么它会进行类型检查:
/* @flow */
declare type A = {
code: ?number;
}
class _A {
code: ?number;
}
var a: A = new _A();
我在第一个变体上遇到的类型检查错误是这样的:
test.js:2:19,4:2: property code
Property not found in
test.js:6:13,14: object literal
我觉得这是一个错误,但我可能是错的。
我通过重新阅读文档弄明白了。可选属性的语法不是:
{code:?number}
而是:
{code?:number}
糟糕。