问题标签 [typescript2.0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1237 浏览

typescript - Typescript 编译器无法调用类型缺少调用签名的表达式

我正在使用 Array(来自 JavaScript)和 List(来自 facebook 不可变库)。我创建以下函数:

编译器说:

无法调用其类型缺少调用签名的表达式。

两个对象都有一个方法 find 具有相同的签名。

有任何想法吗?

我正在使用 TypeScript 版本:2.0.2

0 投票
1 回答
371 浏览

angular - Angular 2 编译器 (ngc) 是否适用于 Typescript 定义文件?

构建面向 Windows 10 UWP 的 Ionic 2 应用程序。在我的代码中,我直接访问 winrt API,就像这样

var localStorage = Windows.Storage.ApplicationData.current.localStorage;

使用 tsc 编译可以,但是当我使用 ngc 编译应用程序时,它会引发错误Cannot find namespace 'Windows'

显然,Angular AOT 不会知道有关 winrt Api 的任何信息,因为它不在 UWP 的上下文中运行,但我认为这就是 Typescript 定义文件的用途。

但是我该如何解决这个问题?我认为也许包括 Typescript 定义文件可以解决这个问题,但 Typescript 编译得很好。

这是我的项目 typings.json 文件

0 投票
0 回答
624 浏览

typescript - 让编译器知道我们通过 npm @types 安装的全局类型定义

我们现在可以像这样安装声明文件。

类型安装在这里。

除其他外,whatwg-fetch/README.md 说明了这一点。

TypeScipt文档是这样说的:

默认情况下,所有可见的“@types”包都包含在您的编译中。任何封闭文件夹的 node_modules/@types 中的包都被认为是可见的......

尽管如此,在使用 TypeScript 2.0 编译我的项目时,仍会出现以下错误:

为了让编译器知道这些类型,我们需要做什么?

作为一种解决方法,我们在 tsconfig.json 文件中添加了以下内容。但是,从 TypeScript 文档来看,这不是必需的。

0 投票
1 回答
57 浏览

typescript2.0 - 如何在 typescript 2.0 中处理外部未定义变量

我一直在开发一个应用程序,它需要处理在我的 index.html 内部<script>标签和窗口范围内定义的外部变量。我需要在我的打字稿文件中访问它以执行一些操作,但在编译期间显示错误,如下所示。

0 投票
2 回答
965 浏览

visual-studio - Visual Studio .Net Core 项目使用 Typescript v1.8 编译器而不是 v2.0

我正在使用 Visual Studio 2015 Pro,更新 3。

我的问题是如何指示 VS 使用我希望它使用的 typescript 编译器的版本。

VS 拒绝使用 Typescript 2.0 编译器,而是使用 1.8。我已经通过 VS 中的 Nuget 安装了Microsoft.Typescript.Compilerv2.0.3 和Microsoft.Typescript.MsBuildv2.0.3,但无济于事。

查看 MSBuild 的详细输出,我看到以下内容:

从项目“C:\Users[...].xproj”(目标“CompileTypeScriptWithTSConfig”取决于它):

使用程序集“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\TypeScript\TypeScript.tasks.dll”中的“VsTsc”任务。

任务 "VsTsc" C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.8\tsc.exe --project "C:\Users[...]\tsconfig.json"

完成执行任务“VsTsc”。

在项目“[...].xproj”中完成构建目标“PreComputeCompileTypeScriptWithTSConfig”。

所以看起来VS正在使用tsc.exe来自Microsoft SDK的。

任何人都知道如何指示 VS 使用tsc我希望它使用的版本?

0 投票
1 回答
1541 浏览

typescript - object.assign does not work on different types with typescript

Just imagine I have 2 html tables next to each other. Each table has an array of unassigned pupils or assigned pupils for a certain test. With 2 buttons you can move those checkbox-selected pupils to the other html table.

The pupils in both html tables have nearly the same properties.

When I use Object.Assign then I get an compile error:

To fix that error I just copy/paste the same properties on both objects...

Thats a workaround but not solution for me. I use Typescript 2 and transpile to ES5.

What possibilities do I have with object.assign and different types for source/target to solve this problem?

AssignedPupil.ts

UnAssignedPupil.ts

0 投票
1 回答
613 浏览

typescript - 使用构造函数时找不到名称,但在转换时可以

我已经导入了两种类型。

从源码看,这两个都是带有构造函数的类。我可以使用第一个的所有构造函数,并且可以使用第二个进行转换,但我不能调用第二个的构造函数。

这两个都有效。

TypeScript 抱怨这个。“找不到名称‘WebStorageStateStore’”。

为什么 TypeScript 在能够转换为类型时找不到构造函数?

oidc-client.

0 投票
1 回答
1047 浏览

typescript - 重写输入以进行严格的空检查

我想切换到对我的 typescript 2.0 项目使用严格的空检查,但是我在输入我的一个依赖项的依赖项时遇到了一些困难(如果你愿意,可以依赖祖父母)。

更详细地说,我有依赖关系BC它们都依赖于A. 所有这些都是转译的 TS 项目,代码和类型都在一个lib文件夹中,它们还没有切换到严格的空检查。

相关输入A如下:

两者都使用,B如下C所示:

使用严格的空检查,这会产生以下编译错误:

那么问题是双重的:

  1. 为了遵守严格的检查,A 中的输入需要更改为:

    interface IInterface { [key: string]: string | undefined; }

    I am not sure if it is possible to override such a type, as this is not simply an extension of existing types. If possible, how is it done?

  2. If possible, how should it be included such that the typings in B and C are checked against my overridden typing, and not what is in their local node_modules directory?

0 投票
5 回答
750 浏览

angularjs - 迁移 gulp 进程以包含打字稿

我正在更新 Angular 1.5.8 应用程序的构建过程,以允许在 Typescript 上进行开发。

在经历了一次过于复杂的Grunt之后,目前的构建过程很简单,只使用GulpBrowserify构建两个包:my-lib.jsmy-app.js. 这样,比我的应用程序代码更大但更稳定的库不必如此频繁地编译,并且应用程序域代码的编译只需要 0.1 秒。我对此感到高兴——以及其他开发人员。

现在我们期待迁移到 Angular 2.0 并希望在Typescript中开始开发,但我不确定如何将它集成到构建过程中,甚至不知道如何做到这一点的最佳方法:是否应该首选使用tsc只是将 Typescript 编译成 Javascript 并让 Browserify 处理依赖关系?或者我应该tsc用作我的主要构建工具并让它解决依赖关系,创建映射文件并制作捆绑包?

Typescript 和 Gulp 都发展得非常快,我在他们的文档 ( 1 , 2 )上找不到用于此用途的文档。我会很感激有经验的人的反馈,他们也在研究这些技术的最新版本。

0 投票
1 回答
271 浏览

typescript - 无法调用类型缺少调用签名的表达式

在这个简化的示例中使用适配器时,我收到一个类型错误(参见方法的最后一行getGloryOfAnimal)。我很困惑,因为据我所知,这些类型已经完全解释了。

我相信我可以为两个适配器编写一个接口而不是创建一个联合类型(例如(T | U)),但在我的情况下,接口会非常大。

想法?我是否坚持为适配器创建一个巨大的通用接口?