typescript 第二部分
Posted shangjun6
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typescript 第二部分相关的知识,希望对你有一定的参考价值。
ts 中不允许变量同名
函数定义的两种方式
第一种:命名函数 = 声明式定义
function fn()
第二种:匿名函数
var fn = function()
function fn(x:string,y:string):string // x:string 这里指 变量x 的数据类型 y:string 这里是 变量y 的数据类型 ():string 这里指 函数return 的数据类型
return " hello world "
var fn=function(x:string,y:string):string // 与上面的解释一致
return "hello world"
约束函数
var sf:(x:string,y:string)=>string=function(a:string,b:string):string
return "hello"
可选参数 :使用 ?来实现可选参数的功能,可选参数一定要放后面
function fn(x:string,y?:string):string
return "hello"
fn("hello","world") fn("hello") // 这两种写法都不会报错
默认参数:使用 = 给参数赋值
function fn(x:string,y:string="hello"):string
return y;
fn("world") // = 给参数一个默认值
... 运算符:如果不确定传参的个数,我们可以用 ... 运算符来表示,且还会将元素转化成数组
function fn(...res):number
console.log(res)
fn(12,24,36,48,60,72,84,96);
函数重载
在 js 里面不存在函数重载,但是有函数重写
函数重载的定义:函数名相同,跟据参数类型决定,使用哪个函数
函数重写:在 js 中,因为一旦函数名相同,后者会将前者覆盖
function fn(x) // 像这里,我们没有指定数据类型,他会默认数据类型为 any (任何类型),但是 一般情况下 还是要加的
ts重载 案例:
定义两个函数的数据类型,没有实现他的功能
function fn(x:number):number;
function fn(x:string):string;
function fn(x):any
return x
fn(12) / fn("hello") // 这个案例是一个简单的写法 主要是看实参传递什么样的格式,以便正常的返回什么样的数据类型
ts 函数重载:定义一个函数的数据类型,函数会进行重载
原生 js 伪实现一个重载的案例:
function fn(x)
if(typeof x == "string")
console.log("string")
else if (typeof x == "number")
console.log("number")
fn(12)
类
案例:
class Person
name:string; // 定义属性
age:number;
constructor(name:string,age:number) // 实例
this.name=name;
this.age=age;
run()
console.log("hello world") // 这个是定义方法
var person = new Person("zhang",20);
定义类的注意事项
1. ts 定义类,首先如果有属性,一定要定义属性,指定数据类型,不加修饰符,默认是 public
2. ts 中,类没有原型概念
3. new 实例的时候,就是调用构造函数
4. 方法中的 this 指向实例对象
类的继承:关键字 extends super
案例:
class Animal
name:string;
age:number;
constructor(name:string,age:number)
this.name=name;
this.age=age;
move()
console.log(this.name);
class Dog extends Animal
constructor(name:string,age:number)
super(name,age)
var shinubi = new Dog("史努比",7);
shinubi.move()
以上是关于typescript 第二部分的主要内容,如果未能解决你的问题,请参考以下文章