я продолжаю получать эту ошибку с типами расходомеров и шутя:jest не понимает типы потоков и разрушение объектов?
TypeError: Cannot read property 'returnType' of undefined
at builder (src/index.js:22:195)
at Object.<anonymous> (__test__/index.spec.js:6:53)
at process._tickCallback (internal/process/next_tick.js:103:7)
Ниже вся моя установка для этого:
код приложения:
// @flow
type BuilderReturnType = {
path: string,
query: string
}
type BuilderOptionsType = {
returnType?: string
}
export default function builder(path: string, {returnType = 'object'}: BuilderOptionsType): BuilderReturnType {
const query = {};
let queryResult = null;
if (returnType === 'string') {
queryResult = doSomething(query);
}
return {
path,
query: queryResult !== null ? queryResult : query
}
}
.babelrc
конфигурации:
{
"presets": [
"es2015", "jest"
],
"plugins": [
"transform-object-rest-spread",
"transform-flow-strip-types"
],
"env": {
"test": {
"presets": [
"es2015", "jest"
],
"plugins": [
"transform-object-rest-spread",
"transform-flow-strip-types"
]
}
}
}
jest.json
конфигурации:
{
"bail": true,
"verbose": true,
"collectCoverage": true,
"coverageDirectory": "./coverage",
"coverageThreshold": {
"global": {
"branches": 100,
"functions": 100,
"lines": 100,
"statements": 100
}
},
"transform": {
"^.+\\.js$": "<rootDir>/node_modules/babel-jest"
}
}
Кажется, что есть проблемы с сигнатурой методы с использованием деструктурирующих и потоком типов одновременно (BuilderOptionsType
объекта):
export default function builder(path: string, {returnType = 'object'}: BuilderOptionsType): BuilderReturnType { ... }
Если я изменить {returnType = 'object'}
к options
и затем destructure в рамках метода он, кажется, работает полностью нормально. Имея это в виду, заключается в том, что единственный способ разрешить использование jest
и flow
типов вместе? Я предпочел бы иметь возможность разрушить подпись, а не внутри тела метода.
ах, я думал, что '{ReturnType = 'объект'}: BuilderOptionsType' было достаточно – hellatan