一次性搞定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差不多,并且除了这些尽量避免使用一切类型的包装类型~

相关推荐
lovepenny1 分钟前
Failed to resolve entry for package "js-demo-tools". The package may have ......
前端·npm
超凌9 分钟前
threejs 创建了10w条THREE.Line,销毁数据,等待了10秒
前端
车厘小团子27 分钟前
🎨 前端多主题最佳实践:用 Less Map + generate-css 打造自动化主题系统
前端·架构·less
芒果12531 分钟前
SVG图片通过img引入修改颜色
前端
海云前端144 分钟前
前端面试ai对话聊天通信怎么实现?面试实际经验
前端
一枚前端小能手1 小时前
🔧 半夜被Bug叫醒的痛苦,错误监控帮你早发现
前端
Juchecar1 小时前
Vue 3 单页应用Router路由跳转示例
前端
这人是玩数学的1 小时前
在 Cursor 中规范化生成 UI 稿实践
前端·ai编程·cursor
UncleKyrie1 小时前
🎨 市面上主流 Figma to Code MCP 对比
前端
南半球与北海道#1 小时前
前端引入vue-super-flow流程图插件
前端·vue.js·流程图