не имеет никакой конструкции или сигнатур вызовов при отложенной загрузке - PullRequest
0 голосов
/ 24 августа 2018

Я немного озадачен этим ...

Я делаю ленивую загрузку всего модуля, но по какой-то причине в TypeScript, похоже, есть проблема с этим, и я неполностью уверен, почему.

В моем компоненте в какой-то момент я запускаю

import('./foo/foo').then(module => this.setState({ Foo: module.foo() }));

, затем в моей функции render() у меня есть что-то вроде

{ this.state.Foo != null ? <this.state.Foo /> : null }

./foo/foo файл экспортирует функцию, например так:

export function foo() {
  return class Foo extends React.Component {
    // ... stuff
  }
}

Однако TypeScript постоянно говорит:

TS2604: JSX element type 'Foo' does not have any construct or call signatures.

State определяется как

type State = { Foo: React.ComponentClass<any, any> | null };

Чего мне не хватает?

О, может пригодиться, чтобы сказать, что я использую TypeScript 3.0.1, и вот моя конфигурация:

{
  "compilerOptions": {
    "experimentalDecorators": true,
    "strict": true,
    "strictFunctionTypes": true,
    "lib": [
      "es5",
      "es2015",
      "dom",
      "scripthost",
      "es2016.array.include",
      "es2017.object",
      "dom.iterable"
    ],
    "outDir": "dist/out-tsc",
    "jsx": "react",
    "allowJs": true,
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "alwaysStrict": true,
    "noImplicitAny": true,
    "noImplicitReturns": true,
    "noStrictGenericChecks": true,
    "noUnusedLocals": true,
    "noUnusedParameters": false,
    "suppressImplicitAnyIndexErrors": true,
    "preserveConstEnums": true,
    "strictNullChecks": true,
    "target": "es5",
    "allowSyntheticDefaultImports": false,
    "typeRoots": ["node_modules/@types", "src/@types"]
  },
  "compileOnSave": true
}
...