TypeScript 的 React 支持
JSX 语法
JSX 是 React 库引入的一种语法,可以在 JavaScript 脚本中直接书写 HTML 风格的标签。
TypeScript 支持 JSX 语法,但是必须将脚本后缀名改成.tsx。
.tsx文件中,类型断言一律使用as形式,因为尖括号的写法会与 JSX 冲突。
// 使用
var x = foo as any;
// 不使用
var x = <any>foo;
上面示例中,变量foo被断言为类型any,在.tsx文件中只能使用第一种写法,不使用第二种写法。
React 库
TypeScript 使用 React 库必须引入 React 的类型定义。
/// <reference path="react.d.ts" />
interface Props {
name: string;
}
class MyComponent extends React.Component<Props, {}> {
render() {
return <span>{this.props.name}</span>;
}
}
<MyComponent name="bar" />; // OK
<MyComponent name={0} />; // error, `name` is not a number
内置元素
内置元素使用JSX.IntrinsicElements接口。默认情况下,内置元素不进行类型检查。但是,如果给出了接口定义,就会进行类型检查。
declare namespace JSX {
interface IntrinsicElements {
foo: any;
}
}
<foo />; // ok
<bar />; // error
上面示例中,<bar />不符合接口定义,所以报错。
一种解决办法就是,在接口中定义一个通用元素。
declare namespace JSX {
interface IntrinsicElements {
[elemName: string]: any;
}
}
上面示例中, 元素名可以是任意字符串。
组件的写法
interface FooProp {
name: string;
X: number;
Y: number;
}
declare function AnotherComponent(prop: { name: string });
function ComponentFoo(prop: FooProp) {
return <AnotherComponent name={prop.name} />;
}
const Button = (prop: { value: string }, context: { color: string }) => (
<button />
);
Buy 工具组件将在独立客户端岛中继续迁移。
相关内容
- 体验 阮一峰最新发布的高质量TypeScript教程。教程适合有JavaScript基础的人系统学习TypeScript,并包含了26个章节的内容,涵盖了TypeSc...
- 自述 这是一本关于TypeScript的教程,由知名作者阮一峰编写。教程介绍了TypeScript的基础知识和用法,并包含了最新的TypeScript 5.0版本的更...
- any 类型,unknown 类型,never 类型 any类型关闭类型检查,unknown类型严格版的any。never类型代表不包含任何值的类型。any和unknown是顶层类型,never是唯一的底层类型。使...
- TypeScript 的数组类型 TypeScript数组成员类型必须相同,用T[]表示。数组类型可推断,readonly使数组成为只读。数组是无边界的,不会越界报错。支持多维数组表示。
- TypeScript 的类型断言 TypeScript的类型断言可以绕过类型检查,as可以断言任意类型,as const可缩小类型范围。非空断言!处理空值,断言函数asserts语句明确参数类型...
- TypeScript 基本用法 TypeScript 基本语法包括类型声明、类型推断、编译成 JavaScript 代码等。使用 tsc 编译器把 TS 代码编译成 JS 代码。tsconfi...