// 函数的定义

//es5定义函数的方法
/*
//函数声明法
function run(){ return 'run';
}
//匿名函数
var run2=function(){ return 'run2';
}
*/ //ts中定义函数的方法
//函数声明法
// function run():string{ // return 'run';
// } //错误写法
// function run():string{ // return 123;
// } //匿名函数 // var fun2=function():number{ // return 123;
// } // alert(fun2()); /*调用方法*/ //ts中定义方法传参
/*
function getInfo(name:string,age:number):string{ return `${name} --- ${age}`;
} alert(getInfo('zhangsan',20)); */ // var getInfo=function(name:string,age:number):string{ // return `${name} --- ${age}`;
// } // alert(getInfo('zhangsan',40)); //没有返回值的方法 // function run():void{ // console.log('run')
// }
// run(); // 3.2、方法可选参数 // es5里面方法的实参和行参可以不一样,但是ts中必须一样,如果不一样就需要配置可选参数 /*
function getInfo(name:string,age?:number):string{ if(age){ return `${name} --- ${age}`;
}else{ return `${name} ---年龄保密`;
} } alert(getInfo('zhangsan')) alert(getInfo('zhangsan',123))
*/ //注意:可选参数必须配置到参数的最后面 //错误写法
/*
function getInfo(name?:string,age:number):string{ if(age){ return `${name} --- ${age}`;
}else{ return `${name} ---年龄保密`;
} } alert(getInfo('zhangsan'))
*/ // 3.3、默认参数 可选参数 // es5里面没法设置默认参数,es6和ts中都可以设置默认参数 /* function getInfo(name:string,age:number=20):string{ if(age){ return `${name} --- ${age}`;
}else{ return `${name} ---年龄保密`;
} } // alert( getInfo('张三'));
alert( getInfo('张三',30));
*/ // 3.4、剩余参数 // function sum(a:number,b:number,c:number,d:number):number{ // return a+b+c+d; // } // alert(sum(1,2,3,4)) ; //三点运算符 接受新参传过来的值 /*
function sum(...result:number[]):number{ var sum=0; for(var i=0;i<result.length;i++){ sum+=result[i];
} return sum; } alert(sum(1,2,3,4,5,6)) ;
*/ /* function sum(a:number,b:number,...result:number[]):number{ var sum=a+b; for(var i=0;i<result.length;i++){ sum+=result[i];
} return sum; } alert(sum(1,2,3,4,5,6)) ;
*/ // 3.5、ts函数重载 // java中方法的重载:重载指的是两个或者两个以上同名函数,但它们的参数不一样,这时会出现函数重载的情况。 // typescript中的重载:通过为同一个函数提供多个函数类型定义来试下多种功能的目的。 //ts为了兼容es5 以及 es6 重载的写法和java中有区别。 //es5中出现同名方法,下面的会替换上面的方法
/*
function css(config){ } function css(config,value){ }
*/ //ts中的重载 // function getInfo(name:string):string; // function getInfo(age:number):string; // function getInfo(str:any):any{ // if(typeof str==='string'){ // return '我叫:'+str;
// }else{ // return '我的年龄是'+str;
// } // } // alert(getInfo('张三')); //正确 // alert(getInfo(20)); //正确 // alert(getInfo(true)); //错误写法 function getInfo(name:string):string;
function getInfo(name:string,age:number):string;
function getInfo(name:any,age?:any):any{
if(age){ return '我叫:'+name+'我的年龄是'+age;
}else{ return '我叫:'+name;
}
} // alert(getInfo('zhangsan')); /*正确*/ // alert(getInfo(123)); 错误 // alert(getInfo('zhangsan',20)); // 3.6、箭头函数 es6 //this指向的问题 箭头函数里面的this指向上下文 // setTimeout(function(){ // alert('run')
// },1000) setTimeout(()=>{ alert('run')
},1000)

typeScript中的函数的更多相关文章

  1. TypeScript 中函数的理解?与 JavaScript 函数的区别?

    一.是什么 函数是JavaScript 应用程序的基础,帮助我们实现抽象层.模拟类.信息隐藏和模块 在TypeScript 里,虽然已经支持类.命名空间和模块,但函数仍然是主要定义行为的方式,Type ...

  2. JavaScript 和 TypeScript 中的 class

    对于一个前端开发者来说,很少用到 class ,因为在 JavaScript 中更多的是 函数式 编程,抬手就是一个 function,几乎不见 class 或 new 的踪影.所以 设计模式 也是大 ...

  3. TypeScript 中的方法重载

    方法重载(overload)在传统的静态类型语言中是很常见的.JavaScript 作为动态语言, 是没有重载这一说的.一是它的参数没有类型的区分,二是对参数个数也没有检查.虽然语言层面无法自动进行重 ...

  4. typescript中的接口

    说到接口:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用.接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心 ...

  5. Typescript中的装饰器原理

    Typescript中的装饰器原理 1.小原理 因为react中的高阶组件本质上是个高阶函数的调用, 所以高阶组件的使用,我们既可以使用函数式方法调用,也可以使用装饰器. 也就是说,装饰器的本质就是一 ...

  6. TypeScript学习笔记—函数

    函数定义 在 JavaScript 中,有两种常见的定义函数的方式——函数声明(Function Declaration)和函数表达式(Function Expression): // 函数声明(Fu ...

  7. TypeScript完全解读(26课时)_5.TypeScript完全解读-函数

    5.TypeScript完全解读-函数 新建function.ts.然后在index.ts内引用 给函数定义参数类型:上面是es5的写法 下面是ts6的写法 一个完整的函数类型.括号 箭头 numbe ...

  8. 十分钟教你理解TypeScript中的泛型

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://blog.bitsrc.io/understanding-generics-in-t ...

  9. TypeScript中使用getElementXXX()

    如果只是看解决方法,可以直接跳到第二小节 简述 Angular 1.x版本是用JavaScript编写的,我们在百度Angular经常会搜索到AngularJS,并不是JavaScript的什么衍生版 ...

随机推荐

  1. 【转】采用Gson解析含有多种JsonObject的复杂json

    本文对应的项目是MultiTypeJsonParser ,项目地址 https://github.com/sososeen09/MultiTypeJsonParser 0 前奏 使用 Gson 去解析 ...

  2. 让Jupyter Notebook个性化

    Win下更改jupyter主题 Themes地址 本人环境  Win+Conda 开始使用pip 安装,发现无法使用pip,修改环境变量,将D:\Program Files\Conda\Scripts ...

  3. redis和memcached有什么区别?redis的线程模型是什么?为什么单线程的redis比多线程的memcached效率要高得多(为什么redis是单线程的但是还可以支撑高并发)?

    1.redis和memcached有什么区别? 这个事儿吧,你可以比较出N多个区别来,但是我还是采取redis作者给出的几个比较吧 1)Redis支持服务器端的数据操作:Redis相比Memcache ...

  4. 行为型模式(八) 职责链模式(Chain of Responsibility)

    一.动机(Motivate) 在软件构建过程中,一个请求可能被多个对象处理,但是每个请求在运行时只能有一个接受者,如果显示指定,将必不可少地带来请求发送者与接受者的紧耦合.如何使请求的发送者不需要指定 ...

  5. 【测试用例工具】TestLink教程:一份完整指南(转)

    转自:https://blog.csdn.net/cjtxzg/article/details/80498226 TestLink教程:一份完整指南1 TestLink的优点 登录到TestLink ...

  6. Nginx一个server配置多个location(使用alias)

    公司测试环境使用nginx部署多个前端项目.网上查到了两个办法: 在配置文件中增加多个location,每个location对应一个项目比如使用80端口,location / 访问官网: locati ...

  7. 题解 UVa10943

    题目大意 多组数据,每组数据给定两个整数 \(n,k\),求出用 \(k\) 个不超过 \(n\) 的数相加得到 \(n\) 的方案数(不同顺序不算同种). 分析 计数水题.令 \(f_{i,j}\) ...

  8. python同时取每个列表的第一个元素

    在实际爬虫开发中, 经常用到列表保存数据, 在使用这些数据的时候,需要要取每个列表里的第一个元素进行拼接. 就需要用到python的内置方法:“zip()" # 现在有3个列表:li_1, ...

  9. jquery操作按钮修改对应input属性

    点击右侧的修改按钮,对应的input中的disabled和readonly得属性修改 $(".buttonxg button").click(function(){ $(this) ...

  10. LightOJ - 1410 - Consistent Verdicts(规律)

    链接: https://vjudge.net/problem/LightOJ-1410 题意: In a 2D plane N persons are standing and each of the ...