相关疑难解决方法(0)

138
推荐指数
5
解决办法
7万
查看次数

'interface'和'declare interface'之间的区别

有什么区别(如果有的话):

declare interface SomeInterface {
    //members here
}
Run Code Online (Sandbox Code Playgroud)

和:

interface SomeInterface {
    //members here
}
Run Code Online (Sandbox Code Playgroud)

typescript

17
推荐指数
1
解决办法
1891
查看次数

TypeScript类型定义最佳实践

我已阅读了几十页,试图找出在TypeScript中设置我的类型定义的最佳方法.

  • 我曾经typings.ts在我的项目中的某个地方有一个文件,然后通过做类似的事情,在每个需要的文件中导入类型

import {IMyCustomType} from './typings';

在我的打字文件中,我会声明我的类型:

export interface IMyCustomType {...}

而不是使用export interface IMyCustomType {..}他们declare interface IMyCustomType {..}

这个设置对我来说有一个很大的优势:我不需要在每个文件中显式导入类型,并且接口在整个项目中直接可用.

问题:

1)**/*.d.ts在编译期间是否会自动导入所有文件是否正确?

2)使用declare并使所有类型都可用于整个项目是一种好的做法吗?

3)是否有标准的目录路径和名称,我应该在哪里放置我的类型定义?

基本上我试图使我的全局接口在我的项目中随处可用,而不必明确地导入它们.这是我应该做的事情,我如何设置我的项目来实现这一目标?

UPDATE

在我的团队提出这个问题之后,大多数人反对使用环境类型,因此我们决定在需要时导入类型.为了使这更容易,我们依靠我们的IDE自动导入所述类型.

javascript typescript typescript-typings

13
推荐指数
1
解决办法
1467
查看次数

Typescript声明文件包含没有成员实现的类定义

当我查看Backbone声明文件时,我看到了:

export class Router extends Events {
    ...
    constructor (options?: RouterOptions);
    initialize (options?: RouterOptions);
    ...
}
Run Code Online (Sandbox Code Playgroud)

以及其他类没有实现的方法定义的地方.我认为这种语法是为接口保留的.编译器允许它传入声明文件,但不传入我自己的ts文件.

.d.ts.ts扩展的编译规则之间是否存在差异?如果是这样,这些类的类应该如何以不同的方式使用?

javascript typescript

3
推荐指数
1
解决办法
4897
查看次数

你什么时候在 TypeScript 中使用声明?

在 TypeScript 中,为什么有时需要使用declare来声明变量,有时不需要(同样的问题对于函数也是如此,......)?

举个例子:我什么时候(以及为什么)使用

declare var foo: number;
Run Code Online (Sandbox Code Playgroud)

如果

let foo: number;
Run Code Online (Sandbox Code Playgroud)

会做同样的事情(至少在我看来好像它做了同样的事情,即它们都声明了一个名为footype的变量number)。有什么不同?

javascript typescript

2
推荐指数
2
解决办法
1236
查看次数