TypeScript надає вам можливість використовувати щось інше, крім React, з JSX у безпечний для типів спосіб. Нижче перераховані пункти, що стосуються налаштування, проте зверніть увагу, що це для досвідчених авторів фреймворків інтерфейсів:
- Ви можете вимкнути генерацію коду у стилі
react
, встановивши опцію"jsx": "preserve"
. Це означає, що JSX буде виводитись як є, а потім ви можете використовувати власний транспілятор для трансляції частин JSX. - Використання глобального модуля
JSX
:- Ви можете контролювати, які HTML-теги доступні і як вони перевіряються на тип налаштовуючи члени інтерфейсу
JSX.IntrinsicElements
. - При використанні компонентів:
- Ви можете керувати тим, який
клас
має бути успадкований компонентами, налаштовуючи дефолтний інтерфейсinterface ElementClass extends React.Component<any, any> { }
. - Ви можете керувати тим, яка властивість використовується для перевірки типу атрибутів (за дефолтом це
props
) налаштувавши оголошенняdeclare module JSX { interface ElementAttributesProperty { props: {}; } }
.
- Ви можете керувати тим, який
- Ви можете контролювати, які HTML-теги доступні і як вони перевіряються на тип налаштовуючи члени інтерфейсу
Передача --jsxFactory <Ім'я фабрики JSX>
разом з --jsx react
дозволяє використовувати іншу фабрику JSX, відмінну від стандартної React
.
Ім'я нової фабрики буде використовуватися для виклику функцій createElement
.
import {jsxFactory} from "jsxFactory";
var div = <div>Hello JSX!</div>
Скомпільовано з:
tsc --jsx react --reactNamespace jsxFactory --m commonJS
Результатом є:
"use strict";
var jsxFactory_1 = require("jsxFactory");
var div = jsxFactory_1.jsxFactory.createElement("div", null, "Hello JSX!");
Ви навіть можете вказати різні jsxFactory
для кожного файлу за допомогою jsxPragma
, наприклад.
/** @jsx jsxFactory */
import {jsxFactory} from "jsxFactory";
var div = <div>Hello JSX!</div>
За допомогою опції --jsx react
, цей файл буде генерувати використання фабрики, вказаної в pragma JSX:
"use strict";
var jsxFactory_1 = require("jsxFactory");
var div = jsxFactory_1.jsxFactory.createElement("div", null, "Hello JSX!");