Я немного озадачен этим ...
Я делаю ленивую загрузку всего модуля, но по какой-то причине в 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
}