我在 try Flow 编辑器中重现了我的情况,可以访问 đây .
以下是链接发生问题时的代码:
/* @flow */
type PayloadType = 1 | 2 | 3;
type Transaction = {
amount: number,
destination: string
}
function create(type: PayloadType, transaction: Transaction): void {
transaction.amount = 10;
transaction.destination = "8ca76aff-8fe8-4715-9e9a-2ad0630d45a0"
if ((type: PayloadType) === 4) {
transaction.message = "Hello";
}
}
const transaction: Transaction = {}
create(1, transaction)
错误是:
Cannot assign "Hello!"
ĐẾN transaction.message
because property message
is missing in Transaction
1.
我分配无效属性的行永远不应该被执行。我假设 Flow 应该知道这一点,因为 kiểu
永远不可能是 4
,因此条件永远不会为 true。
biên tập:这是一个liên kết举一个更现实的例子。
我认为这里的问题不是出现错误,而是错误出现得太晚了,如果在 nếu như
语句中删除 kiểu
的转换,错误会更早出现,什么我相信这是更预期的结果。
/* @flow */
type PayloadType = 1 | 2 | 3;
type Transaction = {
amount: number,
destination: string
}
function create(type: PayloadType , transaction: Transaction): void {
transaction.amount = 10;
transaction.destination = "8ca76aff-8fe8-4715-9e9a-2ad0630d45a0"
if (type === 4) {
transaction.message = "Hello";
}
}
const transaction: Transaction = {}
create(1, transaction)
Flow Try for change
Tôi là một lập trình viên xuất sắc, rất giỏi!