typescript基础(——)基础类型到对象

本文详细介绍了TypeScript的基础知识,包括变量声明、类型断言、作用域、各种运算符,如关系运算符、逻辑运算符、位运算符。此外,还探讨了类型运算符typeof和instanceof的用法,以及函数定义。接着,文章讲解了string对象的属性,如constructor、length和prototype。然后,介绍了Array数组的特性,如何创建和初始化数组,并讲解了数组解构和迭代的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.声明变量: TypeScript 遵循强类型,如果将不同的类型赋值给变量会编译错误

var [变量名] : [类型] =;
var uname:string = "Runoob";
// 声明变量的类型,但没有初始值,变量值会设置为 undefined:  
// 声明变量并初始值,但不设置类型,该变量可以是任意类型: 
// 声明变量没有设置类型和初始值,类型可以是任意类型,默认初始值为 undefined:
注意: 变量不要使用 name 否则会与 DOM 中的全局 window 对象下的 name 属性出现了重名。!!!!

2.类型断言: 允许变量从一种类型更改为另一种类型

var str = '1' 
var str2:number = <number> <any> str   //str、str2 是 string 类型
console.log(str2)
js中编译如下代码:
var str = '1';
var str2 = str;  //str、str2 是 string 类型
console.log(str2);  // 1
// 当类型没有给出时,TypeScript 编译器利用类型推断来推断类型。
// 如果由于缺乏声明而不能推断出类型,那么它的类型被视作默认的动态 any 类型。

3.变量作用域

// 和其他语言很相似
var global_num = 12          // 全局变量
class Numbers { 
   num_val = 13;             // 实例变量
   static sval = 10;         // 静态变量
   
   storeNum():void { 
      var local_num = 14;    // 局部变量
   } 
} 
console.log("全局变量为: "+global_num)  
console.log(Numbers.sval)   // 静态变量
var obj = new Numbers(); 
console.log("实例变量: "+obj.num_val)
// 会被js编译为-------------------------- 不重要
var global_num = 12; // 全局变量
var Numbers = /** @class */ (function () {
    function Numbers() {
        this.num_val = 13; // 实例变量
    }
    Numbers.prototype.storeNum = function () {
        var local_num = 14; // 局部变量
    };
    Numbers.sval = 10; // 静态变量
    return Numbers;
}());
console.log("全局变量为: " + global_num);
console.log(Numbers.sval); // 静态变量
var obj = new Numbers();
console.log("实例变量: " + obj.num_val);

4.TypeScript 运算符 关系运算符 逻辑运算符 短路运算符(&& 与 ||) 位运算符
在这里插入图片描述
5.类型运算符 : typeof 是一元运算符,返回操作数的数据类型

var num = 12 
console.log(typeof num);   //输出结果: number

instanceof 运算符用于判断对象是否为指定的类型

class Person{ } 
var obj = new Person() 
var isPerson = obj instanceof Person; 
console.log("obj 对象是 Person 类实例化来的吗? " + isPerson);

6.函数定义

function () {   
    // 函数定义
    console.log("调用函数") 
}
// return_type 是返回值的类型。!!!!!!!!!
// 函数的返回值: 返回值的类型需要与函数定义的返回类型(return_type)一致
function function_name():return_type { 
    // 语句
    return value; 
}
// 例如:
function greet():string { // 返回一个字符串
    return "Hello World" 
} 
 
//  多个参数,每个参数使用逗号 , 分隔: 
// param1、param2 为参数名。  datatype 为参数类型。
function func_name( param1 [:datatype], param2 [:datatype]) {   
}
// 例如:
function add(x: number, y: number): number {
    return x + y;
}
console.log(add(1,2))
// 多个可选参数,<= 参数个数,否则报错
function buildName(firstName: string, lastName?: string) {
    if (lastName)
        return firstName + " " + lastName;
    else
        return firstName;
}
let result1 = buildName("Bob");  // 正确
let result2 = buildName("Bob", "Adams", "Sr.");  // 错误,参数太多了
let result3 = buildName("Bob", "Adams");  // 正确
// 默认参数
function function_name(param1[:type],param2[:type] = default_value) { 
}
// 例如:
function calculate_discount(price:number,rate:number = 0.50) { 
    var discount = price * rate; 
    console.log("计算结果: ",discount); 
} 
calculate_discount(1000) 
calculate_discount(1000,0.30)
// 传入不确定的参数------剩余参数
function buildName(firstName: string, ...restOfName: string[]) {
    return firstName + " " + restOfName.join(" ");
}
  
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");
// 例如:
function addNumbers(...nums:number[]) {  
    var i;   
    var sum:number = 0; 
    for(i = 0;i<nums.length;i++) { 
       sum = sum + nums[i]; 
    } 
    console.log("和为:",sum) 
 } 
 addNumbers(1,2,3) 
 addNumbers(10,10,10,10,10)
 // 匿名函数:
 var res = function( [arguments] ) { ... }
 var msg = function() { 
    return "hello world";  
} 
console.log(msg())
// 匿名函数自调用
(function () { 
    var x = "Hello!!";   
    console.log(x)     
 })()
 // 构造函数
 var res = new Function ([arg1[, arg2[, ...argN]],] functionBody)
 // arg1, arg2, ... argN:参数列表。
// functionBody:一个含有包括函数定义的 JavaScript 语句的字符串。
var myFunction = new Function("a", "b", "return a * b"); 
var x = myFunction(4, 3); 
console.log(x);
// Lambda 函数 (箭头函数。)
var foo = (x:number)=>10 + x 
console.log(foo(100))
// 函数重载:  重载是方法名字相同,而参数不同,返回类型可以相同也可以不同。必须有一个独一无二的参数类型列表.
// 以下实例定义了参数类型与参数数量不同:
function disp(s1:string):void; 
function disp(n1:number,s1:string):void; 
function disp(x:any,y?:any):void { 
    console.log(x); 
    console.log(y); 
} 
disp("abc") 
disp(1,"xyz");

7.string对象属性
1.constructor—对创建该对象的函数的引用

var str = new String( "This is string" ); 
console.log("str.constructor is:" + str.constructor)
//  输出结果:str.constructor is:function String() { [native code] }

2.length—
3.prototype-----允许您向对象添加属性和方法。
8.Array数组

var array_name[:data type] = [val1,val2…valn]
// 例如:
var numlist:number[] = [2,4,6,8]

9.Array 对象: Array 对象的构造函数接受以下两种值:表示数组大小的数值。初始化的数组列表,元素使用逗号分隔值。

var arr_names:number[] = new Array(4)
for(var i = 0; i<arr_names.length; i++) { 
        arr_names[i] = i * 2 
        console.log(arr_names[i]) 
}
// 直接初始化数组元素:
var sites:string[] = new Array("Google","Runoob","Taobao","Facebook") 
 
for(var i = 0;i<sites.length;i++) { 
        console.log(sites[i]) 
}

10.数组解构:

var arr:number[] = [12,13] 
var[x,y] = arr

11.数组迭代

var j:any; 
var nums:number[] = [1001,1002,1003,1004]
for(j in nums) { 
    console.log(nums[j]) 
}
// 转换成js代码:
var j;
var nums = [1001, 1002, 1003, 1004];
for (j in nums) {
    console.log(nums[j]);
}
// 多维数组
var multi:number[][] = [[1,2,3],[23,24,25]] 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值