object 和 function 类型
// object 和 function
// 定义对象和函数,对于这两种来说,首先,都是包含了很多元素
// 所以定义他们,就是就要定义其 内部元素 的类型
// ------ object --------
let obj1: {
name: string,
age: number
}
obj1 = {
name: "lmj",
age: 18
}
console.log("这是obj1: ", obj1)
// 但是我们有时候要传入的值不确定,于是就需要随时可变的 参数
let obj2: {
name: string, // 必须要写的属性
age?: number,
gender?: string
}
obj2 = {
name: "xyy",
age: 19
}
console.log("这是obj2: ", obj2)
// 这样就可以一般完成少量变量的是否传入了
// 但是如果还是有很多的参数不确定是否传入呢?
let obj3: {
name: string, // 必须要写的属性
age: number, // 必须要写的属性
[propname: string]: unknown
}
obj3 = {
name: "gy",
age: 20,
gender: "女",
hander: true
}
console.log("这是obj3: ", obj3)
// 这样就能在传入参数的时候做到一定控制
// -------- function ---------
// 定义一个函数, 类似于箭头函数的方式
// 语法格式:
// 函数名: (参数名: 参数类型, 参数名: 参数类型) => 返回值类型
let fn1:(a: number, b: number) => number;
let n1 = 123;
let n2 = 234;
fn1 = function(a, b) {
return a + b;
}
console.log("这是fn1: ", fn1(n1, n2))
// 所以需要定义一个函数的话,需要几步,定义参数和返回值类型,定义函数主体,第三步才能 调用函数
let fn2 = function(a: number, b: number): number {
return a - b
}
console.log("这是fn2: ", fn2(n1, n2))
// 这样就只需要两步就能调用了,但是需要改变 fn2 的时候,就需要重新将属性也给定义一遍
// 总结:
// 想要定义函数和对象,就需要对内部的 参数进行一个类型的定义
// 对于对象来说,内部的参数个数不确定的时候,可以用两种方式来不确定参数
// 对于函数的话,先确定其函数参数类型,在定义函数体,和直接定义参数类型和函数体,是一样的