Как отключить проверку типа потока (JS) для одной строки - PullRequest
2 голосов
/ 09 апреля 2019

Некоторые из моих модульных тестов включают передачу недействительных (неправильно набранных) данных в функцию. Например:

// 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].

Очевидно, я хочу, чтобы эта переменная была недействительной, так как я могу отключить проверку типа потока для этого единственного экземпляра?

1 Ответ

3 голосов
/ 09 апреля 2019

В соответствии с документами .flowconfig [options] существует опция для указания подавления комментария . Flow обнаружит этот комментарий и проигнорирует следующую строку кода.

По умолчанию:

Если в вашей конфигурации не указано никаких комментариев подавления, Flow применяет одно значение по умолчанию: // $FlowFixMe.

Так что просто добавьте комментарий ($FlowFixMe), чтобы отменить проверку типа для одной строки.

// $FlowFixMe
const invalidUser: User = {}
...