TypeScript 对象的简单使用和操作包含number对象等

一、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里面可以传入两个参数,第一个为以什么为目标切割,第二个为控制返回数组的长度,也可以只传一个参数

猜你喜欢

转载自blog.csdn.net/samxiaoguai/article/details/128371313