2017-01-06 8 views
0

私はフロータイプと冗談で、このエラーを取得し続ける: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設定:destructureその後、私はoptions{returnType = 'object'}を変更した場合は

export default function builder(path: string, {returnType = 'object'}: BuilderOptionsType): BuilderReturnType { ... } 

と:

{ 
    "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オブジェクト)で非構造とフロータイプを使用してメソッドのシグネチャに問題があるようですメソッド内で、それは完全に正常に動作するようだ。それを念頭に置いて、jestflowタイプを一緒に使用できるようにする唯一の方法はありますか?私は、メソッドボディの内部ではなく、シグネチャ内でデストラクションすることができるようにしたいと思います。

答えて

0

エラーを見ると、2番目の引数を関数に渡すことはできません。 builder('foo')に電話をした場合は、undefinedreturnTypeをオフにしようとしています。

どちら第二引数でそれを呼び出す:builder('foo', {})、または引数のデフォルト値を提供する:

export default function builder(path: string, {returnType = 'object'}: BuilderOptionsType = {}): BuilderReturnType { ... } 
+0

ああ、私は '{戻り値の=「オブジェクト」}考え:BuilderOptionsType'は十分でした – hellatan

関連する問題