TypeScript学习——数组、元组、接口(2)
数组
数组类型注解
const numberArr: (number | string)[] = [1, '2', 3]; //既可以是number 也可以是string
const stringArr: string[] = ['1', '2', '3'];
const underfinedArr: undefined[] = [undefined];
定义类型别名或者class 一定要满足class里面的类型属性,如果不一致会报错
type User={ name: string; age: number }
const objectArr1: User[] = [
{
name: 'dell',
age: 28,
},
];
class Teacher {
name: string;
age: number;
}
const objectArr2: Teacher[] = [
new Teacher(),
{
name: 'dell',
age: 28,
},
];
元组tuple
一个数组长度是固定的,每一项都是固定的类型 可以通过元组去约束
//比如读取csv 文件格式
const teacherInfo: [string, string, number] = ['Dell', 'male', 18]; //多一个少一个,类型不对应都会报错
const teacherList: [string, string, number][] = [
['Dell', 'male', 18],
['Dell', 'male', 18],
,
['Dell', 'male', 18],
];
接口interface
接口在开发过程重,ts会去做代码提示工具,编译成JavaScript之后并不会出现,会被剔除掉
interface和type 的区别
interface和type 相类似,但并不完全一致
1.type Person1可以代表是string
2.interface Person只能代表是个对象或者函数,没有办法代表是基础类型
规范:一般是先用interface 去定义,实在不行的情况才用type
interface Person{
name:string;
}
type Person1={
name:string;
}
const getPersonName=(person:Person)=>{
console.log(person.name);
};
const setPersonName=(person:Person,name:string)=>{
person.name=name;
}
接口继承
interface Person{
readonly msg:string;//表示只能读,不能写
name:string;
age?:number;//age不是必传的
[propName:string]:any;//可以接收其他的额外属性
say():string//返回值string
}
//接口可以继承另一个接口!注意如果定义为Teacher类型,必须同时满足Teacher+Person的方法和属性
interface Teacher extends Person{ //继承Person接口的属性和方法
teach():string;
}
const person = {
name: 'dell',
sex: 18,
say() {
return 'say hello';
},
teach() {
return 'teach';
},
};
//person: Teacher 必须要求Person的属性和方法之后 还得满足Teacher的
const setPersonName = (person: Teacher, name: string): void => {
person.name = name;
};
//类的继承
class User implements Person{ //必须具备接口的那些内容 不然会报错
name='ok';
say(){
return 'hello';
}
}
定义函数类型
interface SayHi{ //定义函数的类型
(word:string):string//接收string类型的函数 返回值必须是string
}
//定义函数类型
const say: SayHi = (word:string) => {
return word
};
初始化ts文件配置
tsc --init
编译成JavaScript
tsc 文件名.ts
运行ts文件
ts-node demo.ts
TypeScript学习——数组、元组、接口(2)的更多相关文章
- TypeScript学习笔记之接口类型
TypeScript的接口,个人理解就是一种约束,包括各种类型的契约或者代码定义上的契约.当然,和java中的用法基本一致,接口可以被继承也可以被实现. 定义一个简单的interface interf ...
- Typescript学习总结之接口
接口 用来建立某种代码约定,使得其他开发者在调用某个方法或者创建新的类时必须遵守接口所定义的代码约定 1. 接口声明属性 interface IStudent { name: string; age: ...
- Typescript 学习笔记六:接口
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- TypeScript学习笔记(五):接口
使用接口 在前面的笔记中我们知道可以使用Object Type来指定参数的属性,如下: function printLabel(labelledObj: {label: string}) { cons ...
- TypeScript 学习一 参数,函数,析构表达式
1,TypeScript是由谷歌开发的,并且新出的Angular2框架就是谷歌公司由TypeScript语言编写的,所以现在TypeScript是有微软和谷歌一起支持的: 2,TypeScript在j ...
- Typescript 学习笔记二:数据类型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- TypeScript 真香系列——接口篇
接口带来了什么好处 好处One —— 过去我们写 JavaScript JavaScript 中定义一个函数,用来获取一个用户的姓名和年龄的字符串: const getUserInfo = funct ...
- typeScript学习随笔(一)
TypeScript学习随笔(一) 这么久了还不没好好学习哈这么火的ts,边学边练边记吧! 啥子是TypeScript TypeScript 是 JavaScript 的一个超集,支持 es6 标准 ...
- 深入浅出 Typescript 学习笔记
TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准. TypeScript 由微软开发的自由和开源的编程语言. TypeScript 设计目标是开发大型应 ...
随机推荐
- Java实现 LeetCode 834 树中距离之和(DFS+分析)
834. 树中距离之和 给定一个无向.连通的树.树中有 N 个标记为 0-N-1 的节点以及 N-1 条边 . 第 i 条边连接节点 edges[i][0] 和 edges[i][1] . 返回一个表 ...
- Java实现 N的阶乘
import java.util.Scanner; public class n的阶乘 { public static void main(String[] args) { Scanner sc =n ...
- Java实现最近点问题
**问题描述:** 给定某空间中(直线空间或平面空间)n个点,请找出它们中的最近点对.你需要完成下列任务: 1.随机产生或手工输入n个点的坐标. 2.输出最近的两个点的坐标. 3.算法尽可能效率高. ...
- SQL Server账号密码(sa)登录失败 错误原因:233
(其实以前经常用的时候,都很简单,最近一段时间不用了,再一看发现都忘记的差不多了,还是写一篇博客吧,防止下一次再在这种问题上面浪费时间) 右键此电脑,点击管理 如果没有此电脑打开文件夹 在这里右键也是 ...
- Android如何使用Notification进行通知
有两张图片素材会放在末尾 activity代码,和XML布局 package com.example.myapplication; import androidx.appcompat.app.AppC ...
- Java 虚拟机是如何判定两个 Java 类是相同的?
Java 虚拟机是如何判定两个 Java 类是相同的? 答:Java 虚拟机不仅要看类的全名是否相同,还要看加载此类的类加载器是否一样.只有两者都相同的情况,才认为两个类是相同的.即便是同样的字节代码 ...
- java实现迷宫走法
** 迷宫走法** 迷宫问题 对于走迷宫,人们提出过很多计算机上的解法.深度优先搜索.广度优先搜索是使用最广的方法.生活中,人们更愿意使用"紧贴墙壁,靠右行走"的简单规则. 下面的 ...
- Linux脚本安装包
脚本安装包 并不是独立的软件安装包类型,常见安装的是源码包,是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简答的参数,就可以实现安装,非常类似于Windows下软件的安装方式. 安装过程(安 ...
- [bx] and loop
1.[bx] 表示一个内存单元,它的偏移地址在bx中 mov al,[bx] 2.描述符号() 来表示一个寄存器或一个内存单元中的内容. 约定符号idata表示常量. 3.loop 标号 CPU在执行 ...
- jenkins 添加用户管理权限
一.前言 小组开会通知 想把jenkins 构建的权限给开发,这样的话效率会增加.运维也不必每次帮助开发去构建发布. 1.规划 jenkins 四个项目分别对应三个人负责.项目下的只负责 CI.UAT ...