首页 > 其他分享 >TypeScript入门基础

TypeScript入门基础

时间:2024-11-11 11:21:25浏览次数:1  
标签:TypeScript console log Color 基础 number let string 入门

  • 参考网址
- https://blog.csdn.net/guoxulieying/article/details/133771340
  • 基础类型
- 布尔值
	- let isDone: boolean = false;
	
- 数字
    - TypeScript里的所有数字都是浮点数,这些浮点数的类型是number。除了支持十进制,还支持二进制、八进制、十六进制
        - 以下示例,结果都是2023
            let decLiteral: number = 2023; // 十进制
             let binaryLiteral: number = 0b11111100111; // 二进制
             let octalLiteral: number = 0o3747; // 八进制
             let hexLiteral: number = 0x7e7; // 十六进制
        
- 字符串
	- let name: string = "Jacky";
  • 注意点一: 元组
let x:[string,number];
x = ['hello',10]
console.log(x,typeof x)

1. `let x:[string, number];`

   这一行定义了一个变量 `x`,并指定了它的类型为元组(tuple)。在 TypeScript 中,元组是一种特殊的数组,它允许你表示一个已知元素数量和类型的数组,各元素的类型不必相同。这里的 `[string, number]` 表示 `x` 是一个包含两个元素的数组,第一个元素必须是字符串类型,第二个元素必须是数字类型。

2. `x = ['hello', 10];`

   这一行给变量 `x` 赋值。这里 `'hello'` 是一个字符串,`10` 是一个数字,它们分别符合前面定义的元组类型中的第一个和第二个元素的类型要求。因此,这个赋值操作是合法的。

3. `console.log(x, typeof x);`

   这一行会打印变量 `x` 的值以及 `x` 的类型。由于 `x` 是一个数组,`typeof x` 将返回 `"object"`,因为 JavaScript 中的数组实际上是对象。输出将会是:

[ 'hello', 10 ] "object"

需要注意的是,虽然 `x` 在 TypeScript 中被声明为特定类型的元组,但是在运行时(即在 JavaScript 中),类型信息会被擦除,因此 `typeof x` 返回的是 `"object"` 而不是 `"tuple"` 或者更具体的类型描述。TypeScript 的类型检查只在编译阶段有效,在运行时不会保留这些类型信息。
  • 注意点二:枚举
enum Color {Red,Green,Blue};
let c:Color = Color.Green;
console.log(c,typeof c)


1. `enum Color {Red, Green, Blue};`

   这里定义了一个名为 `Color` 的枚举。枚举是一组命名的常量集合,通常用于表示一组固定的值。在这个例子中,`Color` 枚举包含了三个成员:`Red`、`Green` 和 `Blue`。默认情况下,枚举成员会被自动赋予从 `0` 开始的整数值,所以:
   - `Color.Red` 的值为 `0`
   - `Color.Green` 的值为 `1`
   - `Color.Blue` 的值为 `2`

2. `let c: Color = Color.Green;`

   这一行定义了一个变量 `c`,其类型为 `Color` 枚举,并将其初始化为 `Color.Green`。根据上面的说明,`Color.Green` 的值为 `1`,所以 `c` 的值就是 `1`。

3. `console.log(c, typeof c);`

   这一行将变量 `c` 的值及其类型打印到控制台。因为 `c` 的值是 `1`(一个数字),所以 `typeof c` 将返回 `"number"`。因此,控制台输出将会是:

1 "number"

总结一下,这段代码定义了一个枚举 `Color`,然后创建了一个类型为 `Color` 的变量 `c` 并将其设置为 `Color.Green`,最后输出了 `c` 的值和类型。输出结果表明 `c` 的值是一个数字 `1`,而 `typeof c` 则显示其类型为 `"number"`。
  • 注意点三:unknown类型
let notSure: unknown = 4;
notSure = 'May be ...'
notSure = false
console.log(notSure,typeof notSure);
  • 注意点四:void,用于声明该函数没有返回值
function test(): void {
    console.log("test");
}
test()
  • 注意点五: nullundefined类型
let u: undefined = undefined;
let n: null = null;
console.log(u,n)
  • 注意点六: Union Types 联合类型
let myFav: string | number;
myFav = 'seven';
console.log(myFav)
myFav = 123
console.log(myFav)

函数

  • 有名函数匿名函数
- 有名函数(有名字的函数)

function add(x:number, y:number):number {
    return x + y;
}
console.log(add(1,2))

- 匿名函数(没有名字的函数,用变量接收)

let addDemo = function (x:number, y:number):number {
    return x + y;
}
console.log(addDemo(1,2));
  • 可选参数: 比起普通的声明方式,多了一个?
function buildName(firstName: string, lastName?: string): string {
    if(lastName){
        return firstName + ' ' + lastName;
    } else {
      return firstName;
    }
}
console.log(buildName('Bob'))
console.log(buildName('Bob','Jim'));
  • 剩余参数: 会被打包在一起
function getEmployeeName(name1:string,...restOfName:string[]):void{
    console.log(restOfName) // [ 'Jim', 'Tom', 'Kate' ]
    let nameTogether:string = name1 + ' ' + restOfName.join(' ')
    console.log(nameTogether)
}
getEmployeeName('Bob','Jim','Tom','Kate') // Bob Jim Tom Kate
  • 箭头函数
- 基本示例

const add = (x: number, y: number):number => {
    return x + y;
}
console.log(add(1,2))

- 简写形式: 如果函数体只有一行代码,并且这行代码的结果就是函数的返回值,那么可以省略大括号 {} 和 return 关键字

const add = (x: number, y: number):number => x+y
console.log(add(1,2))

	- 当只有一个参数时,可以省略参数周围的圆括号 ()
	
	const greet = name => `Hello ${name}`
	console.log(greet('Jim'))
	
	- 没有参数时,需要保留圆括号 ()
	
	const greet = ():string => `Hello,World!`
	console.log(greet())
	

  • 基本实例
class Person {
	
	// 私有属性只能在类的内部访问
    private name: string;
    private age: number;
	
	// 初始化方法
    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }
	
	// 定义一个公共方法,实现自己的逻辑
    public getPersonInfo():string {
        return `My name is ${this.name} and age is ${this.age}`;
    }

}
let obj = new Person('Jim Green',18);
console.log(obj.getPersonInfo());
  • 继承
class Employee extends Person {
    private department:string // 新增拓展属性
	
	// 重写构造,新增department
    constructor(name: string, age:number, department:string) {
        super(name,age); // 继承父类原来的属性
        this.department = department;
    }

    public getEmployeeInfo():string {
        return this.getPersonInfo() + ` and work in ${this.department}`;
    }
}
let obj2 = new Employee('LiLei',20,'Sale')
console.log(obj2.getPersonInfo()) // My name is LiLei and age is 20
console.log(obj2.getEmployeeInfo()); // My name is LiLei and age is 20 and work in Sale

循环

  • for...offor...in语句
- for...of:返回元素
- for...in:返回索引

let someArray = [1,'string',false]
for(let entry of someArray) {
    console.log(entry) // 1,string,false
}
for(let entry in someArray) {
    console.log(entry) // 0,1,2
}

标签:TypeScript,console,log,Color,基础,number,let,string,入门
From: https://www.cnblogs.com/qinganning/p/18539339

相关文章

  • 算法性能测试基础
    算法的性能测试是一个综合评估算法在不同条件下的表现和效率的过程。在进行算法性能测试时,需要关注多个关键指标,以确保全面、准确地评估算法的性能。以下是对算法性能测试的详细解释和需要关注的指标的归纳:一、算法性能测试概述算法性能测试的目的是验证算法在各种输入情况下的......
  • 基于Python的大模型学习手册(基础级)
    前言大模型(全称为大语言模型,英文名称:LargeLanguageModel),这个2023年刷爆了互联网圈的“现象级明星”,几乎以前所未有的姿态,席卷了各行各业,世人一时为之惊叹。同时,也开辟了各大厂商投入AI研发的新赛道。前排提示,文末有大模型AGI-CSDN独家资料包哦!乘着这波“西风”,国内大......
  • 书生大模型实训营第4期基础岛第一关:书生大模型全链路开源体系介绍
    书生大模型实训营第4期基础岛第一关:书生大模型全链路开源体系介绍1.书生·浦语的开源之路1.1模型发展历程1.2核心技术思路1.2.1模型训练迭代技术1.2.2基于规划和搜索解决复杂问题1.3书生·浦语开源模型谱系2.书生·浦语全链路开源体系结构2.1数据开源:书生·万......
  • 网络基础:http协议和内外网划分
    声明学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频https://space.bilibili.com/350329294一,HTTP协议1......
  • 渗透测试-网络基础(1)
    声明学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章。公众号:泷羽secb站:泷羽sec笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。目录HTTP协议简介历史HTTP协议请求方式HTTP协议之URLHTTP协议状态码......
  • freemarker 介绍 环境搭建&&快速入门 静态化测试
    概述:freemarker介绍环境搭建&&快速入门静态化测试FreeMarkerfreemarker简介环境搭建&&快速入门创建测试工程配置文件创建模型类创建模板创建controller创建启动类测试静态化测试需求分析静态化测试freemarker简介FreeMarker是一款模板引擎:即一种基于模板和......
  • 实验3 类和对象_基础编程2
    任务1:#pragmaonce#include<iostream>#include<string>usingstd::string;usingstd::cout;//按钮类classButton{public:Button(conststring&text);stringget_label()const;voidclick();private:stringlabel;};......
  • # 学期(2024-2025-1) 学号(20241420) 《计算机基础与程序设计》第七周学习总结
    学期(2024-2025-1)学号(20241420)《计算机基础与程序设计》第七周学习总结作业信息这个作业属于哪个课程<班级链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求链接>(2024-2025-1计算机基础与程序设计第七周作业)这个作业的目标<计算机科学概论......
  • 实验3 类和对象 基础编程2
    实验任务1:源代码button.hpp:点击查看代码1#pragmaonce23#include<iostream>4#include<string>56usingstd::string;7usingstd::cout;89//按钮类10classButton{11public:12Button(conststring&text);13stringget_label(......
  • 实验3 类和对象_基础编程2
    任务1源程序:button.hpp1#pragmaonce23#include<iostream>4#include<string>56usingstd::string;7usingstd::cout;89//按钮类10classButton{11public:12Button(conststring&text);13stringget_label()cons......