this为例:

interface DOMPoint extends DOMPointReadOnly {
    w: number;
    x: number;
    y: number;
    z: number;
}

declare var DOMPoint: {
    prototype: DOMPoint;
    new(x?: number, y?: number, z?: number, w?: number): DOMPoint;
    fromPoint(other?: DOMPointInit): DOMPoint;
};

interface DOMPointReadOnly {
    readonly w: number;
    readonly x: number;
    readonly y: number;
    readonly z: number;
    matrixTransform(matrix?: DOMMatrixInit): DOMPoint;
    toJSON(): any;
}

declare var DOMPointReadOnly: {
    prototype: DOMPointReadOnly;
    new(x?: number, y?: number, z?: number, w?: number): DOMPointReadOnly;
    fromPoint(other?: DOMPointInit): DOMPointReadOnly;
};

interface DOMQuad {
    readonly p1: DOMPoint;
    readonly p2: DOMPoint;
    readonly p3: DOMPoint;
    readonly p4: DOMPoint;
    getBounds(): DOMRect;
    toJSON(): any;
}

为什么他们要用不同的 struct 声明一个与接口同名的大写变量?这是什么意思?在DOMQuad中,当他们引用DOMPoint时,他们是引用var还是interface?风险价值的目的是什么?

推荐答案

它为浏览器提供的内置DOMPoint类提供类型信息.

为什么他们要用不同的 struct 声明一个与接口同名的大写变量?

该接口定义了DOMPoint个中的instances个是什么样子.declare global var DOMPoint告诉TypeScript存在一个全局函数(由浏览器提供),该函数创建DOMPoint个实例(new)和fromPoint个静态方法.

这模仿了TypeScript对class X { }的作用,它既为X中的instances创建了一个类型(X),也创建了一个构造函数(X),它是一个运行时值(而不仅仅是一个类型).

DOMQuad中,当它们引用DOMPoint时,它们引用的是var还是接口?

界面.

风险价值的目的是什么?

纯粹是为了告诉TypeScript它的存在.它不需要它(浏览器需要),只是TypeScript知道使用DOMPoint是有效的,它是一个具有给定签名的全局.

Typescript相关问答推荐

类型ElementTypes不可分配给类型ElementTypes.word'

对可变位置的父对象的TypScript空判断

如何使用TypScript限制允许对JavaScript值进行的操作集?

Angular 过滤器形式基于某些条件的数组控制

如何正确修复TypScript 4.7到4.8升级中的TS 2345编译错误

Angular中的其他服务仅获取默认值

React router 6.22.3不只是在生产模式下显示,为什么?

如果请求是流,如何等待所有响应块(Axios)

向NextAuth会话添加除名称、图像和ID之外的更多详细信息

TypeScrip原始字符串没有方法

类型脚本返回的类型包含无意义的泛型类型名称

在函数中打字推断记录的关键字

类型脚本满足将布尔类型转换为文字.这正常吗?

在数据加载后,如何使用NgFor在使用异步管道的可观测对象上生成子组件?

如何使这种一对一关系在旧表上起作用?

如何从对象或类动态生成类型

在单独的组件中定义React Router路由

为什么TypeScrip假定{...省略类型,缺少类型,...选取类型,添加&>}为省略类型,缺少类型?

记录的子类型<;字符串,X>;没有索引签名

对于通过 Axios 获取的数据数组,属性map在类型never上不存在