在这种情况下,我们有没有不破坏类型检查的解决方法?
// Error
function foo({name = 42}: {name: ?number}) {
// ^ null or undefined [1] is incompatible with number [2].
console.log(name);
}
the bug中的解决方案阻止流程检查默认值类型。
// Correct
const foo = ({name = true}: $Subtype<{name: ?string}>) => {
// ^ flow does not check this
console.log(name);
}
答案 0 :(得分:0)
还能保持类型安全的唯一解决方法是不使用解构:
function foo(props: {name: ?number}) {
let name = props.name === undefined ? 41 : props.name;
console.log(name);
}
答案 1 :(得分:0)
我们有一个用于添加类型的旧代码库,因此我们不想更改功能。
在主体中而不是在标头中分解参数-对我来说非常有用。
function foo(arg: {name: ?number}) {
const { name = 42 } = arg;
// the default value is only used for undefined values.
console.log((name: (number | null)));
}