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 设计目标是开发大型应 ...
随机推荐
- javascript内置函数提供的显式绑定
内置函数提供的显式绑定 最近在开发中遇到使用arr.map(module.fun) 这样的写法时(在一个模块调用了另外一个模块的方法), 造成了函数中this丢失的问题, 显示为undefined, ...
- VSCode最佳设置
最近在学习Vue,用VSCode开发.经过摸索,VSCode最佳设置. { "eslint.enable": false, "workbench.colorTheme&q ...
- 微信小程序实现连续扫码功能(uniapp)
注:本文使用的是 uniapp 语法. 微信小程序提供了扫码API:wx.scanCode,但它只能扫一次码,想要实现连续扫码,需要借用 camera 组件.camera 组件不仅能拍照,还具有扫码功 ...
- IDEA自定义模板
RT,虽然看起来简单,每当配置新的IDEA 时,又不免度娘,所以整理下 1.类的模板 路径: settings-Editor-File and Code Templates 右侧找到 class 添加 ...
- git status –s
状态简览 git status 命令的输出十分详细,但其用语有些繁琐. 如果你使用 git status -s 命令或 git status --short 命令,你将得到一种更为紧凑的格式输出. 运 ...
- iOS/swift 单选框和复选框
/** 复选框 */ import UIKit class LYBmutipleSelectView: UIView { var selectindexs:[Int]=[]//选中的 //标题数组 v ...
- 一篇文章搞懂filebeat(ELK)
本文使用的filebeat是7.7.0的版本本文从如下几个方面说明: filebeat是什么,可以用来干嘛 filebeat的原理是怎样的,怎么构成的 filebeat应该怎么玩 一.filebeat ...
- 12个Python游戏中的龙穴探险,快速掌握基础,其实很简单
越来越多的人学习python编程,但更多的人,拿着教程却不知道该怎么学. 今天我给大家举一个例子,是我自己学习python时,用到的方法. 首先,我是一名普通的程序员,相对于十几年开发经验的程 ...
- Beta冲刺<5/10>
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺--第五天(05.23) 作业正文 如下 其他参考文献 ... B ...
- 从外包公司运作方式看EJB工作原理
从来没用过EJB,然后进了家公司需要用,没办法,硬着头皮学吧.以下是个人学习体会,觉不好的话也不要吐槽了. 关于EJB的工作原理,你可以想象为一家公司(EJB容器),外包型的(服务接口), 公司内部有 ...