初学-TypeScript-笔记03

函数类型表达式

// 函数类型表达式

function greeter(fn:(a:string) =>void){

fn('hello world')

}

//上面的方法也可以讲 fun 拿出去写

//如

type GreetFunction = (s:string) =>void;

function greeter1(fn:GreetFunction){

fn('hello world')

}

function printToConsole(s:string){

console.log(s)

}

greeter(printToConsole)


// 调用签名

type DescribleFunction = {

description:string,

(someArg:number):boolean//传入number类型的值 并  返回 布尔值 的方法

}

function doSomethings(fn:DescribleFunction){

console.log(fn.description +'return' +fn(6))

}

function fn1(n:number){

console.log(n)

return true;

}

fn1.description ='hello';

doSomethings(fn1);

// 刚开始不太理解 fn1 为什么会继承 description  这块代码得从后往前看 就明白了。

构造签名 就是在调用签名 增加一个 new

class Ctor {

s:string

    constructor(s:string) {

this.s = s;

}

}

type SomeCons = {

new (s:string):Ctor

}

function fn(ctor:SomeCons){

return new ctor('hello')

}

const f =fn(Ctor);

console.log(f.s)



interface CallOrConstructor {

new (s:string):Date

(n?:number):number

}

function fnx(date:CallOrConstructor){

let d =new date('2020-12-12');

let n = date(10);

}

// 泛型函数 -类型推断  Type  可以是任意 的 Sddd  => 该函数传入的必须是Type类型的数组,  该函数返回值必须是 Type类型或者是undefined

// 传入啥类型  返回啥类型

function firstElement(arr:Type[]) :Type |undefined {

return arr[0]

}

firstElement(['1','2','3'])

firstElement(['1','2','3'])

firstElement([1,2,3])

firstElement([1,2,3])

firstElement([])

firstElement([])

// 写一个稍微复杂一点的泛型函数调用

function map(arr:Input[],func:(arg:Input) =>Output) :Output[] {

return arr.map(func)

}

const parsed =map(['1','2','3'],(n) =>parseInt(n))


泛型函数- 限制条件

function longerst(a:Type,b:Type){

if(a.length >= b.length){

return a

}else{

return b

}

}

const longerArray =longerst([1,2,3],[1,2,3]);

const longString =longerst('xxx','bbb')

//const notOk = longerst('10',10) // 错误示范

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容