Zoeken op website

javascript - Kan React JSX niet importeren vanuit een apart bestand tijdens het gebruik van Typescript


Het probleem is vergelijkbaar met Hoe importeer je React JSX correct vanuit een apart bestand in Typescript 1.6.

Het werkt goed wanneer alle code in één bestand staat. Maar wanneer ik de component naar een ander bestand verplaats en probeer te importeren, geeft de TypeScript-compiler een fout.

De code ziet er goed uit.

Fout die ik krijg is

JSX-elementtype 'Hello' heeft geen construct- of callsignaturen.

app.tsx

/// <reference path="typings/tsd.d.ts" />
import React = require('react');
import ReactDOM = require('react-dom');
import $ = require('jquery');
import Hello = require('./components/Hello');

$(()=>{
    ReactDOM.render(<Hello name="Tom" />,document.body);
});

componenten/Hello.tsx

/// <reference path="../typings/tsd.d.ts" />
import React = require('react');

export default class Hello extends React.Component<any,any>{
    render(){
        return <div className="hello">Hello {this.props.name} !</div>;
    }
}

tsconfig.json

{
    "compilerOptions": {
        "module": "commonjs",
        "jsx": "react"
    }
}

Antwoord #1

Als je deze regels schreef

export default class Hello ...
/* and */    
import Hello = require('./components/Hello');

Dan moet je dit schrijven om het te gebruiken:

<Hello.Hello name="Tom" />

Je zou dit in plaats daarvan kunnen schrijven, om de module de klasse als topniveau-object te laten exporteren:

class Hello ...
export = Hello

of je zou de Hello-export uit de module kunnen importeren met destructuring:

import { Hello } from './components/Hello';

of je zou de standaard export uit de module kunnen importeren:

import Hello from './components/Hello';

Gerelateerde artikelen