3.基础数据类型(上)
-- 未经授权禁止转载 --
// ------ 字符串类型
//类型推断: 当定义一个变量但没有明确指定类型时,编译器会根据变量的初始值自动推断出其类型
//let url = "dengruicode.com" //编译器推断出 url 的类型为 string
let url: string = "dengruicode.com"
console.log("url:", url)

// ------ 数值类型 number
/*
let balance = -100 // 账户余额为-100元
let weight = 60.5 // 体重为60.5公斤
*/
let balance: number = -100

let weight: number = 60.5
console.log("balance:", balance, "weight:", weight)

// ------ 布尔类型 boolean
//let tv = true //电视 - true(开)
let tv: boolean = true
console.log("tv:", tv)

// ------ 对象 object
/*
let boy = {
    name: "David",
    age: 28,
    weight: 70.5
}
*/
//定义了一个匿名类型 {name: string, age: number, weight: number}
let boy: {name: string, age: number, weight: number} = {
    name: "David",
    age: 28,
    weight: 70.5
}
console.log("boy:", boy)

// ------ map
/*
//定义了一个包含标题和网址的map
let web = new Map([
    ["title", "邓瑞编程"],
    ["url", "dengruicode.com"]
])
console.log("web:", web)

注:
    报错
        找不到名称“Map”。是否需要更改目标库? 请尝试将 “lib” 编译器选项更改为“es2015”或更高版本

    解决方法
        配置 tsconfig.json (ESNext 最新版本)
            {
                "compilerOptions": {
                    "target": "ESNext",
                }
            }

*/

/*
泛型是编程语言中的一个特性, 允许在定义函数、接口、类等时不指定具体的类型,
而是在调用时由编译器根据传入的参数自动推断出类型

Map<K, V>是一个泛型接口,用于表示键值对的集合,其中 K 代表键的类型, V 代表值的类型,
通过使用泛型, Map 接口可以适用于不同类型的键和值

Map<string, string> 是泛型接口 Map<K, V> 的一个具体实例,
其中键和值都被指定为了 string 类型, 这意味着 Map 只能存储 string 类型的键和值
*/
let web: Map<string, string> = new Map([
    ["title", "邓瑞编程"],
    ["url", "dengruicode.com"]
])
console.log("web:", web)

/*
let girl = new Map([
    ["name", "Luna"],
    ["age", 20],
    ["weight", 50.5]
])
*/
// | 符号用于定义联合类型, 它表示一个值可以是几种类型中的一种
// string | number 表示该变量可以是字符串或者数值
let girl: Map<string, string | number> = new Map<string, string | number>([
    ["name", "Luna"],
    ["age", 20],
    ["weight", 50.5]
])
console.log("girl:", girl)
/*
//错误示例
let girl: Map<string, string | number> = new Map([
    ["name", "Luna"],
    ["age", 20],
    ["weight", 50.5]
])

错误原因
TypeScript 基于第一个键值对 ["name", "Luna"] 推断 Map 的类型为 Map<string, string>,
而定义的类型注解是 Map<string, string | number>,这两个类型不兼容,因此 TypeScript 报错
*/

//new Map<string, string | number | boolean> 已经明确指定了 Map 的类型,因此可省略变量 girl2 的类型注解
let girl2 = new Map<string, string | number | boolean>([
    ["name", "Amy"],
    ["age", 22],
    ["weight", 60],
    ["isGirl", true]
])
console.log("girl2:", girl2)

//any 是一种类型, 可以存储任意类型的值 
let girl3 = new Map<string, any>([
    ["name", "Amy"],
    ["age", 22],
    ["weight", 60],
    ["isGirl", true]
])
console.log("girl3:", girl3)

// ------ set
//let number = new Set([1, 2, 3, 4, 5]) //定义了一个包含5个"不重复"的整数的集合
let number: Set<number> = new Set([1, 2, 3, 4, 5])
console.log("number:", number)


  • 状态: 更新中
  • 作者: 邓瑞
  • 课时数量: 37 节课
更新中 ...