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 设计目标是开发大型应 ...
随机推荐
- ASP.NET生成验证码
首先,添加一个一般处理程序 注释很详细了,有不懂的欢迎评论 using System; using System.Collections.Generic; using System.Drawing; ...
- Java实现 LeetCode 407 接雨水 II(二)
407. 接雨水 II 给定一个 m x n 的矩阵,其中的值均为正整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水. 说明: m 和 n 都是小于110的整数.每一个单位的高 ...
- 第四届蓝桥杯JavaA组省赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.世纪末的星期 题目描述 曾有邪教称1999年12月31日是世界末日.当然该谣言已经不攻自破. 还有人称今后的某个世纪末的12月31日, ...
- 第九届蓝桥杯JavaC组省赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.哪天返回 题目描述 小明被不明势力劫持.后被扔到x星站再无问津.小明得知每天都有飞船飞往地球,但需要108元的船票,而他却身无分文. ...
- Java实现 洛谷 P1023 税收与补贴问题
import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner in = n ...
- java实现洛谷P1308统计单词数
题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...
- java实现人民币金额大写
在与财务相关的应用中,经常会用到人民币金额的大写,比如发票的打印程序. 本题的任务是:从键盘输入一个十亿以内的正整数(int类型),把它转换为人民币金额大写(不考虑用户输入错误的情况). 比如,用户输 ...
- (十一)DVWA全等级SQL Injection(Blind)盲注--手工测试过程解析
一.DVWA-SQL Injection(Blind)测试分析 SQL盲注 VS 普通SQL注入: 普通SQL注入 SQL盲注 1.执行SQL注入攻击时,服务器会响应来自数据库服务器的错误信息,信息提 ...
- 涨见识了,在终端执行 Python 代码的 6 种方式!
原作:BRETT CANNON 译者:豌豆花下猫@Python猫 英文:https://snarky.ca/the-many-ways-to-pass-code-to-python-from-the- ...
- neo4j导入csv文件
neo4j导入csv文件 关于neo4j的安装 官网和网上博客提供了n中安装的方法,这里不再赘述: 普通安装: https://cloud.tencent.com/developer/article/ ...