Поиск…


замечания

Чтобы получить подсветку синтаксиса в вашем редакторе (например, код VS), вам нужно будет загрузить информацию для ввода модулей, которые вы используете в своем проекте.

Скажем, например, вы используете React и ReactDOM в своем проекте, и вы хотите получить подсветку и Intellisense для них. Вам нужно будет добавить типы в свой проект, используя следующую команду:

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

Теперь ваш редактор должен автоматически забрать эту информацию и предоставить вам автозаполнение и Intellisense для этих модулей.

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']
    }
};

Основные компоненты являются (в дополнении к стандартному entry , output и другим свойствам WebPack):

Погрузчик

Для этого вам нужно создать правило, которое проверяет расширения файлов .ts и .tsx , в качестве загрузчика укажите ts-loader loader.

Устранение расширений TS

Вам также нужно добавить расширения .ts и .tsx в массив resolve , или webpack их не увидит.

tsconfig.json

Это минимальный tsconfig, чтобы вы могли работать.

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

Давайте рассмотрим свойства один за другим:

include

Это массив исходного кода. Здесь у нас есть только одна запись, src/* , которая указывает, что все в каталоге src должно быть включено в компиляцию.

compilerOptions.target

Указывает, что мы хотим скомпилировать целевой объект ES5

compilerOptions.jsx

Установка этого значения в true заставит TypeScript автоматически скомпилировать ваш синтаксис React.createElement("div") из <div /> в React.createElement("div") .

compilerOptions.allowSyntheticDefaultImports

Удобное свойство, которое позволит вам импортировать модули узла, как если бы они были модулями ES6, поэтому вместо того, чтобы делать

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

вы можете просто сделать

import React, { Component } from 'react'

без каких-либо ошибок, сообщая вам, что React не имеет экспорта по умолчанию.

Мой первый компонент

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);

При использовании TypeScript с React, как только вы загрузите определения типа React DefinitelyTyped ( npm install --save @types/react ), каждый компонент потребует добавления аннотаций типа.

Вы делаете это так:

class App extends Component<AppProps, AppState> { }

где AppProps и AppState - это интерфейсы (или псевдонимы типов) для реквизита ваших компонентов и состояния соответственно.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow