Recherche…


Composant ReactJS écrit en Typescript

Vous pouvez utiliser les composants de ReactJS facilement dans TypeScript. Renommez simplement l'extension de fichier 'jsx' en 'tsx':

//helloMessage.tsx:
var HelloMessage = React.createClass({
  render: function() {
    return <div>Hello {this.props.name}</div>;
  }
});

ReactDOM.render(<HelloMessage name="John" />, mountNode);

Mais pour utiliser pleinement la fonctionnalité principale de TypeScript (vérification de type statique), vous devez effectuer plusieurs opérations:

1) convertir React.createClass en une classe ES6:

//helloMessage.tsx:
class HelloMessage extends React.Component {
  render() {
    return <div>Hello {this.props.name}</div>;
  }
}

ReactDOM.render(<HelloMessage name="John" />, mountNode);

Pour plus d'informations sur la conversion en ES6, cliquez ici

2) Ajouter des interfaces et des interfaces d'état:

interface Props {
    name:string;
    optionalParam?:number;
}

interface State {
  //empty in our case
}

class HelloMessage extends React.Component<Props, State> {
  render() {
    return <div>Hello {this.props.name}</div>;
  }
}
// TypeScript will allow you to create without the optional parameter
ReactDOM.render(<HelloMessage name="Sebastian" />, mountNode);
// But it does check if you pass in an optional parameter of the wrong type
ReactDOM.render(<HelloMessage name="Sebastian" optionalParam='foo' />, mountNode);

Désormais, TypeScript affichera une erreur si le programmeur oublie de transmettre des accessoires. Ou si vous essayez de transmettre des accessoires qui ne sont pas définis dans l'interface.

Dactylographier et réagir et webpack

Installer des typescript, typings et webpack globalement

npm install -g typescript typings webpack

Installation de chargeurs et liaison de texte dactylographié

npm install --save-dev ts-loader source-map-loader npm link typescript

Lier TypeScript permet à ts-loader d'utiliser votre installation globale de TypeScript au lieu d'avoir besoin d'un document distinct pour la copie de type local.

installer des fichiers .d.ts avec typeScript 2.x

npm i @types/react --save-dev
npm i @types/react-dom --save-dev

installer des fichiers .d.ts avec le typecript 1.x

typings install --global --save dt~react
typings install --global --save dt~react-dom

fichier de configuration tsconfig.json

{
  "compilerOptions": {
    "sourceMap": true,
    "noImplicitAny": true,
    "module": "commonjs",
    "target": "es5",
    "jsx": "react"
  }
}

fichier de configuration webpack.config.js

module.exports = {
    entry: "<path to entry point>",// for example ./src/helloMessage.tsx
    output: {
        filename: "<path to bundle file>", // for example ./dist/bundle.js
    },

    // Enable sourcemaps for debugging webpack's output.
    devtool: "source-map",

    resolve: {
        // Add '.ts' and '.tsx' as resolvable extensions.
        extensions: ["", ".webpack.js", ".web.js", ".ts", ".tsx", ".js"]
    },

    module: {
        loaders: [
            // All files with a '.ts' or '.tsx' extension will be handled by 'ts-loader'.
            {test: /\.tsx?$/, loader: "ts-loader"}
        ],

        preLoaders: [
            // All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'.
            {test: /\.js$/, loader: "source-map-loader"}
        ]
    },

    // When importing a module whose path matches one of the following, just
    // assume a corresponding global variable exists and use that instead.
    // This is important because it allows us to avoid bundling all of our
    // dependencies, which allows browsers to cache those libraries between builds.
    externals: {
        "react": "React",
        "react-dom": "ReactDOM"
    },
};

enfin exécuter webpack ou webpack -w (pour le mode montre)

Remarque : React et ReactDOM sont marqués comme externes



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow