从不在typescript中的type参数中使用的关键字

时间:2018-03-11 11:45:20

标签: typescript

我想了解以下代码:

export const getArraySemigroup = <A = never>(): Semigroup<Array<A>> => {
  return {
    concat: (x, y) => concat(x, y)
  }
}

我对never的理解是,它是永远无法解决的,是否被用作默认参数?

我从未(双关语)看到之前带有等号的类型参数。

1 个答案:

答案 0 :(得分:0)

import { AfterContentInit, AfterViewInit, Directive, ElementRef, Input, Renderer } from '@angular/core'; @Directive({ selector: '[tv-user-content]' }) export class UserContentDirective implements AfterContentInit { @Input() src: string; constructor( private el: ElementRef ) { } ngAfterContentInit() { this.el.nativeElement.setAttribute('src',"myprefix" + this.src); } } generic type default value。默认情况下,泛型类型默认值为空对象<A = never>

documentation中所述,

  

never类型表示从未发生的值的类型。例如,永远不是函数表达式或箭头函数表达式的返回类型,它总是抛出异常或永不返回的异常;变量也会获得永远不会被任何类型的守卫缩小的类型。

这段代码基本上迫使开发人员始终使用带有显式类型参数的泛型函数。