0
フローには、voidnullify
によって返されている型が互換性がないと表示されます。私は何かが足りないと思う?一般的な上位関数の互換性のないフロータイプ
import faker from 'faker'
type P =
| string
| number
| boolean
function voidnullify(func:() => P): ?P {
const random: number = faker.random.number({
min: 1,
max: 10
})
const result = func()
if (random <= 7) return result
else if (random <= 9) return null
else return undefined
}
function someBoolean() {
return true
}
function someString() {
return "hello"
}
function someNumber() {
return 1
}
let maybeNum: ?number
let maybeStr: ?string
let maybeBool: ?boolean
maybeNum = voidnullify(someNumber)
maybeStr = voidnullify(someString)
maybeBool = voidnullify(someBoolean)
私がPをXに変更した場合、または共用体型の1つを削除した場合でも、フローは「エラーなし」と表示されます。これは偽陽性です。 –
申し訳ありませんnvm、実際には、おかげでたくさん動作します –