TypeScript 对象
一、TypeScript 对象
1.对象是包含一组键值对的实例
let oneObj = {
key1: "1",
key2: "2",
key3:["content1", "content2"]
}
2.TypeScript 类型模板
在js中我们给对象新加值可以oneObj.key4 = [2,3]
但是这在ts中是不允许的
类型“{
key1: string; key2: string; key3: string; }”上不存在属性“key4”
当我们改变对象某一个值时可以用oneObj.key3 = 2;但是这在ts中也是会发生编译错误。
即:Typescript 中的对象必须是特定类型的实例
例如:
let oneObj = {
key1: "1",
key2: "2",
key3: "",
}
oneObj.key3 = "2";
console.log(oneObj) //{ key1: '1', key2: '2', key3: '2' }
3.鸭子类型
一个对象有效的语义,非继承特定的类或实现特定的接口,而是由"当前方法和属性的集合"决定。
“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子
。”
interface oneDuck {
speak:string,
walk:string,
}
function doDuck(d1:oneDuck,d2:oneDuck):oneDuck {
let speak = d1.speak + d2.speak
let walk = d1.walk + d2.walk
return {
speak:speak,walk:walk}
}
// 正确
let newDuck = doDuck({
speak:"hello",walk:"go"},{
speak:"ts",walk:"go"})
console.log(newDuck) //{ speak: 'hellots', walk: 'gogo' }
// 错误
let newDuck2 =doDuck({
speak:"hello"},{
speak:"ts",walk:"go"})
注: \color{red}{注:} 注: 可以把包含speak和walk的对象叫做一只鸭子,newDuck里面传入了两只鸭子是OK的,但是在newDuck2中传入的第一只鸭子没有walk,说明这是一只假鸭子这就会导致一个运行编译时错误,但是在常规函数中,它是可以接受一个类型为"假鸭子"的对象
例如:
function oneDuck(d1:any,d2:any) {
let speak = d1.speak + d2.speak
let walk = d1.walk + d2.walk
console.log({
speak:speak,walk:walk} )
}
oneDuck({
speak:"hello"},{
speak:"ts",walk:"go"})
二、TypeScript Number对象
1.Number对象包含的属性
属性 | 描述 |
---|---|
MAX_VALUE | 表示最大的数,MAX_VALUE 属性值接近于 1.79E+308。大于 MAX_VALUE 的值代表 “Infinity” |
MIN_VALUE | 表示最小的数,即最接近 0 的正数 (实际上不会变成 0)。最大的负数是 -MIN_VALUE,MIN_VALUE 的值约为 5e-324。小于 MIN_VALUE (“underflow values”) 的值将会转换为 0。 |
NaN | 非数字值(Not-A-Number) |
NEGATIVE_INFINITY | 负无穷大,溢出时返回该值。该值小于 MIN_VALUE。 |
POSITIVE_INFINITY | 正无穷大,溢出时返回该值。该值大于 MAX_VALUE。 |
prototype | Number 对象的静态属性。可向对象添加属性和方法。 |
constructor | 返回对创建此对象的 Number 函数的引用。 |
console.log(oneNum.constructor)
console.log("TypeScript Number 属性: ");
console.log("最大值为: " + Number.MAX_VALUE);
console.log("最小值为: " + Number.MIN_VALUE);
console.log("负无穷大: " + Number.NEGATIVE_INFINITY);
console.log("正无穷大:" + Number.POSITIVE_INFINITY);
console.log("NaN:" + Number.NaN);
console.log(Number.constructor);
// [Function: Number]
// TypeScript Number 属性:
// 最大值为: 1.7976931348623157e+308
// 最小值为: 5e-324
// 负无穷大: -Infinity
// 正无穷大:Infinity
// NaN:NaN
// [Function: Function]
对prototype的使用:
function onePeopleFun(this:any,num:number,name:string) {
this.num = num
this.name = name
}
let onePeople = new (onePeopleFun as any)(123,"admin")
onePeopleFun.prototype.email = "[email protected]"
console.log(onePeople.num)
console.log(onePeople.name)
console.log(onePeople.email)
2.Number 对象的方法
属性 | 描述 |
---|---|
toExponential() | 把对象的值转换为指数计数法。 |
toFixed() | 把数字转换为字符串,并对小数点指定位数。 |
toLocaleString() | 把数字转换为字符串,使用本地数字格式顺序。 |
toPrecision() | 把数字格式化为指定的长度 表示为字符串。 |
toString() | 把数字转换为字符串,使用指定的基数。数字的基数是 2 ~ 36 之间的整数。若省略该参数,则使用基数 10。 |
valueOf() | 返回一个 Number 对象的原始数字值。 |
3.Number对象的简单使用
let oneVal:number = 1234.1234;
let oneNumb = new Number(oneVal);
console.log(oneNumb.toExponential())
console.log(oneNumb.toFixed(2))
console.log(oneNumb.toFixed(6))
console.log(oneNumb.toLocaleString())
console.log(oneNumb.toPrecision(5))
console.log(oneNumb.toPrecision(6))
console.log(oneNumb.toString()); // 输出10进制
console.log(oneNumb.toString(2)); // 输出2进制
console.log(oneNumb.toString(8)); // 输出8进制
console.log(oneNumb.valueOf());
let twoNumb = new Number("2");
console.log(twoNumb.valueOf());
// 1.2341234e+3
// 1234.12
// 1234.123400
// 1,234.123
// 1234.1
// 1234.12
// 1234.1234
// 10011010010.00011111100101110010010001110100010100111
// 2322.07713444350516
// 1234.1234
// 2
三、TypeScript String对象
1.String对象包含的属性
属性 | 描述 |
---|---|
length | 返回字符串的长度。 |
prototype | String 对象的静态属性。可向对象添加属性和方法。 |
constructor | 返回对创建此对象的 String 函数的引用。 |
let oneStr = new String("Hello TypeScript");
console.log(oneStr.constructor)
console.log(oneStr.length)
// [Function: String]
// 16
// prototype使用同上
2.String对象包含的方法
属性 | 描述 |
---|---|
charAt() | 返回在指定位置的字符。 |
charCodeAt() | 返回在指定的位置的字符的 Unicode 编码。 |
concat() | 连接两个或更多字符串,并返回新的字符串。 |
indexOf() | 返回某个指定的字符串值在字符串中首次出现的位置。 |
lastIndexOf() | 从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。 |
localeCompare() | 用本地特定的顺序来比较两个字符串。 |
match() | 查找找到一个或多个正则表达式的匹配。 |
replace() | 替换与正则表达式匹配的子串。 |
search() | 检索与正则表达式相匹配的值。 |
slice() | 提取字符串的片断,并在新的字符串中返回被提取的部分。 |
split() | 把字符串分割为子字符串数组。 |
substr() | 从起始索引号提取字符串中指定数目的字符。 |
substring() | 提取字符串中两个指定的索引号之间的字符。 |
toLocaleLowerCase() | 根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射。 |
toLocaleUpperCase() | 根据主机的语言环境把字符串转换为大写,只有几种语言(如土耳其语)具有地方特有的大小写映射。 |
toLowerCase() | 把字符串转换为小写。 |
toString() | 返回字符串。 |
toUpperCase() | 把字符串转换为大写。 |
valueOf() | 返回指定字符串对象的原始值。 |
3.String对象的简单使用
console.log("str.charAt(0) 为:" + oneStr.charAt(0));
console.log("str.charCodeAt(0) 为:" + oneStr.charCodeAt(0));
let str1 = new String("Hello");
let str2 = new String("TypeScript");
let str3 = str1.concat(str2 as string);
console.log("str1 + str2 : " + str3)
// str.charAt(0) 为:H
// str.charCodeAt(0) 为:72
// str1 + str2 : HelloTypeScript
console.log(oneStr.indexOf( "l" ))
console.log(oneStr.lastIndexOf("l" ))
// 2
// 3
console.log(oneStr.localeCompare("Hello"))
console.log(oneStr.localeCompare("TypeScript"))
console.log(oneStr.localeCompare("Hello TypeScript"))
// 1
// -1
// 0
console.log(oneStr.match(/l/g))
console.log(oneStr.search(/a/g))
console.log(oneStr.search(/l/g))
// [ 'l', 'l' ]
// -1
// 2
console.log(oneStr.slice(2)) // llo TypeScript
console.log(oneStr.split(" ", 1)) // [ 'Hello' ]
console.log(oneStr.split(" ", 2)) // [ 'Hello', 'TypeScript' ]
console.log(oneStr.substring(1,3)) // el
console.log(oneStr.toLocaleLowerCase()) // hello typescript
console.log(oneStr.toLocaleUpperCase()) // HELLO TYPESCRIPT
console.log(oneStr.toLowerCase()) // hello typescript
console.log(oneStr.toUpperCase()) // HELLO TYPESCRIPT
let oneStr2:number = 123;
console.log(oneStr2.toString()) // "123"
let oneStr3 = new String(oneStr2);
console.log(oneStr3.valueOf( ));// "123"
注: \color{red}{注:} 注: split里面可以传入两个参数,第一个为以什么为目标切割,第二个为控制返回数组的长度,也可以只传一个参数