TypeScript React(上)

news/2025/1/14 18:28:28/

目录

扩展学习资料

TypeScript设计原则

TypeScript基础

语法基础

变量声明

JavaScript声明变量

 TypeScript声明变量

示例

接口 (标准类型-Interface)

 类型别名-Type

接口 VS 类型别名

类型断言:欺骗TS,肯定数据符合结构

泛型、<大写字母>


扩展学习资料

名称

链接

备注

TypeScript 官方文档

TypeScript: Documentation - TypeScript for the New Programmer

英文(中文翻译稍显落后)

中文文档

基础类型 · TypeScript中文网 · TypeScript——JavaScript的超集

搭配英文一起看

TypeScript 入门教程

TypeScript 入门教程

相对比较好入门的文档

更好的理解 TS 泛型

https://medium.com/@rossbulat/typescript-generics-explained-15c6493b510f

英文

TypeScript(静态类型更适合管理复杂的应用)更严格、更高效的JavaScript(动态类型的编程语言)

TypeScript设计原则

  • 静态识别可能出现错误的代码结构。
  • 为大型应用的代码提供结构化的机制。
  • 不增加程序运行时开销,保留JavaScript运行时行为这一特性。
  • 语言层面提供可组合性、可推理性。
  • 语法层面保持和ECMAScript提案一致。
  • 不增加额外的表达式层面的语法。

TypeScript基础

语法基础

TS是JS超集

  1. 全平台支持
  2. 静态类型检测
  3. 可选的静态类型
  4. ES6(浏览器层面对domAPI 的支持)
  5. DOM支持
  6. 面向对象

变量声明

JavaScript声明变量
var name = '';
const money = 120;
const bool = true;
 TypeScript声明变量
const name: string = '';
const money: number = 120;
const bool: boolean = true;
示例
// number数组
let list: number[] = [1,2,3];
let list2: Array<number> = [1,2,3];
// 元组类型
let complexVar: [number, string] = [1, '云'];//第一个只能是number, 第二个只能是string
// 枚举,从默认value:0开始
enum DateEnum {
// 0    1     2       3     4Mon, Tues, Wednes, Thurs, Fri
};
let data: DateEnum = DateEnum.Mon;
// 空类型void,通常用在函数没有返回值时使用
// 箭头函数() => void =
let setValue: () => void = () => {list2 = [2,3];
};
// 普通函数:void
let otherSetValue = function otherSetValue(): void {complexVar = [2,'云2'];
};
// 不确定类型
let simpleVar: any;
simpleVar = 3;
simpleVar = '云3';
// null空对象
// undefined 未定义类型
// never 永不存在值的类型, try catch(): never{}

接口 (标准类型-Interface)

// 标准类型-Interface
// 在面向对象语言中,接口(interfaces)是一个很重要的概念,
//它是对行为的抽象,而具体如何行动需要由类(classes)去实现(implement)。
// TypeScript 中的接口是一个非常灵活的概念,除了可用于对类的一部分行为进行抽象以外,
//也常用于对模型[Shape]进行描述。
// 接口定义一个数据结构
interface IProps {// 书写习惯:定义类型接口通常名字I开头name: string,gender: number,address: string,
}
const staff: IProps = {name: 'xiaoYun'gender: 1,address: 'beijing'
}
function register(): IProps {return {name: 'xiaoBai'gender: 2,address: 'shanghai'   }
}

 类型别名-Type

// 类型别名-Type
// 类型别名用来给一个类型起个新名字。
// 字符串字面量类型用来约束取值只能是某几个字符串中的一个。
// type 可以扩展,但是不能继承
type Props {name: string,gender: number,address: string,
}
const staff: Props = {name: 'xiaoYun'gender: 1,address: 'beijing'
}
function register(): Props {return {name: 'xiaoBai'gender: 2,address: 'shanghai'   }
}

接口 VS 类型别名

接口:

  • 可以继承,可以多态。接口的实现需要implements,接口可以继承。
  • 既是‘抽象’也是‘约束’。
  • 优先使用。

类型别名:

  • 只是类型的别名,没有创建新类型。扩展通过‘ &’实现。
  • 主要是约束作用,早起TypeScript主要用作函数、对象的约束。

类型断言:欺骗TS,肯定数据符合结构

// TypeScript允许你覆盖它的推断,并且能以你任何你想要的方式分析它,这种机制被称为【类型断言】。
// 通常用来手动指定一个值的类型。
// JSX不能使用'<>'
interface Hello {sayHello: () => void,name: string,
}
const a = {};
a.name = '1234'// 此时ts报错不存在属性name
a.sayHello()// 不存在sayHello方法// 类型断言1
const a = <Hello>{};
// 类型断言2
const b = {} as Hello;

泛型<T>、<大写字母>

扩展组件和方法的复用型,不与any等同,存在约束性

interface IGProps {setName:<T>(str: T) => void
}
const nameWrapper: IGProps = {//<T>声明(str:T使用)setName:<T>(str:T) => {const userNameArr2: T[] = [];userNameArr2.push(str);    },
};
nameWrapper.setName('yun');
nameWrapper.setName(1234);


http://www.ppmy.cn/news/1151636.html

相关文章

c语言之strcmp函数使用和实现

文章目录 前言一、strcmp函数使用二、实现方法 前言 c语言中常用的字符串处理函数strcmp总结。 一、strcmp函数使用 原型 int strcmp ( const char * str1, const char * str2 );strcmp比较两个字符串的大小&#xff0c;一个字符一个字符比较&#xff0c;按ASCII码比较 规定…

汽车RNC主动降噪算法DSP C程序实现

汽车RNC主动降噪算法C程序 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,车载

python 之xml 使用原生xml.dom

一、xml操作 使用xml进行创建<Placemark id"placemark_id"><name>模型</name><Location><longitude>121.6097139799135</longitude></Location> </Placemark>from xml.dom import minidom# 创建一个新的XML文档 do…

pytorch中的池化函数

PyTorch 提供了多种池化函数&#xff0c;用于对输入数据进行不同类型的池化操作。以下是一些常用的 PyTorch 池化函数&#xff1a; 平均池化&#xff08;Average Pooling&#xff09;: nn.AvgPool1d: 一维平均池化。nn.AvgPool2d: 二维平均池化。nn.AvgPool3d: 三维平均池化。 …

Linux友人帐之系统管理与虚拟机相关

一、虚拟机相关操作 1.1虚拟机克隆 虚拟机克隆是指将一个已经安装好的虚拟机复制出一个或多个完全相同的副本&#xff0c;包括虚拟机的配置、操作系统、应用程序等&#xff0c;从而节省安装和配置的时间和资源。 虚拟机克隆的主要用途有&#xff1a; 创建多个相同或相似的虚拟…

走进Spark

什么是Spark 是一个基于内存的&#xff0c;用于大规模数据处理&#xff08;离线计算、实时计算、快速查询&#xff08;交互式查询&#xff09;&#xff09;的统一分析引擎&#xff0c;因为是基于内存的所以可以更快的完成任务 离线计算:离线计算一般存储在HDFS中使用MapReduce或…

电商数据接口平台1688阿里巴巴获得搜索词推荐获取商品详情数据

1688.item_search_suggest-获得搜索词推荐 公共参数 请求地址: 注册请求接入调用key 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[ite…

uni-app:本地缓存的使用

uni-app 提供了多种方法用于本地缓存的操作。下面是一些常用的 uni-app 本地缓存方法&#xff1a; uni.setStorageSync(key, data): 同步方式将数据存储到本地缓存中&#xff0c;可以使用对应的 key 来获取该数据。 uni.setStorage({key, data}): 异步方式将数据存储到本地缓存…