Некоторые из моих модульных тестов включают передачу неверных (неправильно типизированных) данных в функцию. Например:
// user.js
type User = {
id: number,
name: string,
email: string
}
export function validateUser(user: User): Promise<void> {
return new Promise((resolve, reject) => {
// resolve if user is valid, reject if not
})
}
// user.unit.js
import {validateUser} from '../user.js'
describe('validateUser', () => {
it('should reject if user is not valid', () => {
const invalidUser: User = {}
expect(validateUser(invalidUser)).to.be.rejected
})
})
Поскольку переменная invalidUser
не соответствует типу User
, я получаю ошибку потока:
Cannot call validateUser with invalidUser bound to user because:
• property id is missing in object literal [1] but exists in User [2].
• property name is missing in object literal [1] but exists in User [2].
• property email is missing in object literal [1] but exists in User [2].
Очевидно, я хочу, чтобы эта переменная была недействительной, так как же отключить проверку типа потока для этого единственного экземпляра?
В соответствии с .flowconfig [опции] документы есть возможность указать подавить комментарий. Flow обнаружит этот комментарий и проигнорирует следующую строку кода.
По умолчанию:
If no suppression comments are specified in your config, Flow will apply one default:
// $FlowFixMe
.
Поэтому просто добавьте комментарий ($FlowFixMe
), чтобы отключить проверку типов для одной строки.
// $FlowFixMe
const invalidUser: User = {}