Ricerca…


Osservazioni

Per ottenere l'evidenziazione della sintassi nell'editor (ad es. VS Code) è necessario scaricare le informazioni di digitazione per i moduli che si utilizzano nel progetto.

Supponi ad esempio di utilizzare React e ReactDOM nel tuo progetto e desideri ottenere l'evidenziazione e Intellisense per loro. Dovrai aggiungere i tipi al tuo progetto usando questo comando:

npm install --save @types/react @types/react-dom

Ora il tuo editor dovrebbe rilevare automaticamente queste informazioni di digitazione e fornirti il ​​completamento automatico e Intellisense per questi moduli.

webpack.config.js

module.exports = {
    entry: './src/index',
    output: {
        path: __dirname + '/build',
        filename: 'bundle.js'
    },
    module: {
        rules: [{
            test: /\.tsx?$/,
            loader: 'ts-loader',
            exclude: /node_modules/
        }]
    },
    resolve: {
        extensions: ['.ts', '.tsx']
    }
};

I componenti principali sono (oltre alla entry standard, output e altre proprietà del pacchetto Web):

Il caricatore

Per questo è necessario creare una regola per .tsx le estensioni di file .ts e .tsx , specificare ts-loader come loader.

Risolvi le estensioni TS

È inoltre necessario aggiungere le estensioni .ts e .tsx nell'array di resolve , altrimenti il ​​webpack non le vedrà.

tsconfig.json

Questo è un tsconfig minimo per farti funzionare.

{
    "include": [
        "src/*"
    ],
    "compilerOptions": {
        "target": "es5",
        "jsx": "react",
        "allowSyntheticDefaultImports": true
    }
}

Passiamo attraverso le proprietà una ad una:

include

Questa è una matrice di codice sorgente. Qui abbiamo solo una voce, src/* , che specifica che tutto nella directory src deve essere incluso nella compilazione.

compilerOptions.target

Specifica che vogliamo compilare il target ES5

compilerOptions.jsx

Impostando su true , TypeScript compila automaticamente la sintassi tsx da <div /> a React.createElement("div") .

compilerOptions.allowSyntheticDefaultImports

Proprietà maneggevole che ti consentirà di importare i moduli nodo come se fossero moduli ES6, quindi invece di farlo

import * as React from 'react'
const { Component } = React

puoi solo farlo

import React, { Component } from 'react'

senza errori che ti dicono che React non ha un'esportazione predefinita.

Il mio primo componente

import React, { Component } from 'react';
import ReactDOM from 'react-dom';


interface AppProps {
    name: string;
}
interface AppState {
    words: string[];
}

class App extends Component<AppProps, AppState> {
    constructor() {
        super();
        this.state = {
            words: ['foo', 'bar']
        };
    }

    render() {
        const { name } = this.props;
        return (<h1>Hello {name}!</h1>);
    }
}

const root = document.getElementById('root');
ReactDOM.render(<App name="Foo Bar" />, root);

Quando si utilizza TypeScript con React, dopo aver scaricato le definizioni di tipo React DefinitelyTyped ( npm install --save @types/react ), ogni componente richiederà l'aggiunta di annotazioni di tipo.

Lo fai in questo modo:

class App extends Component<AppProps, AppState> { }

dove AppProps e AppState sono interfacce (o digitano alias) per i puntelli e lo stato dei componenti rispettivamente.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow