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 设计目标是开发大型应 ...
 
随机推荐
- Physic Design:Floorplan算法概览
			
仅用于学习交流,转载请联系本人. 1 floorplan是什么 floorplan常被翻译成布图规划,是指在芯片级别上对模块进行布局,也就是哪个单元放在什么地方,但是单元内部的具体布局并不关心.该步骤 ...
 - Java实现蓝桥杯勇者斗恶龙
			
勇者斗恶龙 你的王国里有一条n个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头). 村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉恶龙一个直径不超过x的头, 且需要支付x个金币.如何雇佣骑士才 ...
 - java实现矩阵变换加密法
			
一种Playfair密码变种加密方法如下:首先选择一个密钥单词(称为pair)(字母不重复,且都为小写字母),然后与字母表中其他字母一起填入至一个5x5的方阵中,填入方法如下: 1.首先按行填入密钥串 ...
 - java实现第六届蓝桥杯机器人数目
			
机器人数目 少年宫新近邮购了小机器人配件,共有3类,其中, A类含有:8个轮子,1个传感器 B类含有: 6个轮子,3个传感器 C类含有:4个轮子,4个传感器 他们一共订购了100套机器人,收到了轮子6 ...
 - 数据结构:用实例分析ArrayList与LinkedList的读写性能
			
目录 背景 ArrayList LinkedList 实例分析 1.增加数据 2.插入数据 3.遍历数据 3.1.LinkedList遍历改进 总结 背景 ArrayList与LinkedList是J ...
 - SpringSecurity(2)---记住我功能实现
			
SpringSecurity(2)---记住我功能实现 上一篇博客实现了认证+授权的基本功能,这里在这个基础上,添加一个 记住我的功能. 上一篇博客地址:SpringSecurity(1)---认证+ ...
 - Spring IoC 容器的扩展
			
前言 本篇文章主要介绍 Spring 中 BeanFactory 的扩展 ApplicationContext,我们平时日常开发中也基本上是使用它,不会去直接使用 BeanFactory. 那么在 S ...
 - 深入理解PHP原理之Opcodes
			
Opcode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.NET的MSL. 举个例子,比如你写下了如下的PHP代码: <?php echo "Hello Wo ...
 - PyQt5常用控件及方法(代码段)
			
文章目录PyQt5程序基本格式QMainWindow主窗口QLabel标签QTextBrowser文本浏览器QTextEdit文本编辑器QPushButton按键QCheckBox复选框QRadioB ...
 - 附024.Kubernetes全系列大总结
			
Kubernetes全系列总结如下,后期不定期更新.欢迎基于学习.交流目的的转载和分享,禁止任何商业盗用,同时希望能带上原文出处,尊重ITer的成果,也是尊重知识.若发现任何错误或纰漏,留言反馈或右侧 ...