一次性搞定TS原始类型和对象类型

前言


🫥Typescript是什么?我们往往直接会答出来,是JS的超集合,经历了多次失败的Typescript的学习,我认为,应该重新审视一下Typescript,我认为应该单独的把Typescript看成一门语言来学习,如果一直陷入JS的世界里面很多内容我们会难以精准把控。

一.原始数据类型


🥱如果你熟悉Java,你会知道Java有八大基本数据类型,当然Typescript中也有8种原始基本类型,他们分别是

接下来我们一一来解释不同数据类型的使用方法。

  1. null:表示的是有值但是是一个空值,快递盒子里面装的是礼物,但是礼物是一个小的空礼物盒。
  2. string:就是我们常见的JavaScript中的字符串,等价于JS中的字符串。
  3. number:等价于JavaScript中的number类型。
  4. boolean:等价于JavaScript中的布尔类型。
  5. undefined:表示的是没有值,仅仅有一个空的快递盒子。
  6. object:非常通用的类型,它可以表示任何对象,包括普通对象、数组、函数等等。但需要注意的是,不包括原始类型(如 number、string、boolean、null、undefined)
js 复制代码
let obj: object;

obj = {}; // 可以赋值为一个空对象
obj = { name: 'John', age: 25 }; // 可以赋值为一个具有 name 和 age 属性的对象
obj = [1, 2, 3]; // 可以赋值为一个数组
obj = () => { console.log('Hello, World!'); }; // 可以赋值为一个函数

// 以下是一些不合法的赋值

obj = 42; // 不可以赋值为一个数字
obj = 'hello'; // 不可以赋值为一个字符串
obj = true; // 不可以赋值为一个布尔值
obj = null; // 不可以赋值为 null
obj = undefined; // 不可以赋值为 undefined
  1. symbol:等价于JavaScript中的symbol用法如下
js 复制代码
const sys:symbol = Symbol()
const sys2:symbol = Symbol("description")

console.log(sys === sys2) // 每个symbol都是唯一的
  1. bigInt:用来存储比number类型更大的数据,使用方法如下
js 复制代码
let bigIntNum: bigint;

bigIntNum = BigInt(123456789); // 使用 BigInt() 函数将数字转换为 bigint
bigIntNum = 987654321n; // 使用字面量语法直接赋值 bigint

二.其他常用类型


🫥数组类型:数组的使用在Typescript中使用方法和JS中一样,它可以使用两种方式进行类型标注。

js 复制代码
let array:Array<string> = ['a','b','c'] // 使用泛型的方式

let array:string[] = ['a','b','c'] // 常用方式

🥱元组类型:在Python中有元组的类型这个类型在JS目前还没有,但是在Typescript中也有元组的概念,我们可以简单的理解为定长的只读数组,并且允许存储不同数据类型。

js 复制代码
let tupleData:[string,boolean,number] = ['a',true,2]

元组除了这种使用方式还有具名元组

js 复制代码
let nameTuple:[name:string,age:number] = ['a',12]

三.认识interface和type


😎interface被翻译为接口,在Java中interface是用来定义类的行为和规范的,在Typescript中interface可以用来定义类的行为和规范还可以用来规定对象的结构,简单理解,无论是类还是对象都要符合接口的定义,如果不符合对应规范就会报错。

js 复制代码
interface Animal{
    name?:string // 可选
    readonly age:number // 只读
    printInformation():void
}

// 定义了一个类
class Dog implements Animal{
    name:string
    age:number
    constructor(name:string,age:number){
        this.name = name
        this.age = age
    }
    printInformation(){
        console.log(this.name+this.age)
    }
}
// 定义了一个对象
const cat:Animal = {
    name:"huahua",
    age:12,
    printInformation:():void=>{
        console.log("cute")
    }
}

🫥type被称为类型别名,使用非常的简单,基本用法如下:

js 复制代码
type unionType = 1|2|3|4|5|6|7|8|9
type exampleType = unionType
let data:exampleType = 2

四.特殊标识void


👹可能很多人第一次见到这个修饰符应该是在Java中,在Java中void表示的是这个方法没有返回值,是的在Typescript中作用也是这样的,主要表示的是方法没有返回值。

js 复制代码
public class Example {
    public static void sayHello() {
        System.out.println("Hello!");
    }

    public static void main(String[] args) {
        sayHello(); // 输出: "Hello!"
    }
}

在TS中它的用法是这样的。

js 复制代码
const cat:Animal = {
    name:"huahua",
    age:12,
    printInformation:():void=>{
        console.log("cute")
    }
}

五.object、Object 与 { }


🫥一眼看下去是不是不知道用哪个?首先给出答案,仅仅只使用objectObject是顶级对象,{}的用法和Object差不多,并且除了这些尽量避免使用一切类型的包装类型~

相关推荐
CUIYD_19896 分钟前
javascript —— ! 和 !! 的区别与作用
前端·javascript·vue.js
帅帅哥的兜兜2 小时前
next.js实现项目搭建
前端·react.js·next.js
筱歌儿2 小时前
css 左右布局
前端·css
GISer_Jing2 小时前
编译原理AST&以Babel为例进行解读、Webpack中自定义loader与plugin
前端·webpack·node.js
GISer_Jing2 小时前
Webpack中Compiler详解以及自定义loader和plugin详解
前端·webpack·node.js
浩~~2 小时前
CSS常用选择器
前端·css
于慨2 小时前
uniapp+vite+cli模板引入tailwindcss
前端·uni-app
yunvwugua__3 小时前
Python训练营打卡 Day26
前端·javascript·python
满怀10153 小时前
【Django全栈开发实战】从零构建企业级Web应用
前端·python·django·orm·web开发·前后端分离
Darling02zjh3 小时前
GUI图形化演示
前端