TS 编译器在 node_modules\@angular\platform-b​​rowser\src\browser\ 目录中为 transfer_state.d.ts 文件抛出错误

Posted

技术标签:

【中文标题】TS 编译器在 node_modules\\@angular\\platform-b​​rowser\\src\\browser\\ 目录中为 transfer_state.d.ts 文件抛出错误【英文标题】:TS compiler throwing errors for transfer_state.d.ts file in node_modules\@angular\platform-browser\src\browser\ directoryTS 编译器在 node_modules\@angular\platform-b​​rowser\src\browser\ 目录中为 transfer_state.d.ts 文件抛出错误 【发布时间】:2018-08-06 13:57:32 【问题描述】:

我的 TS 编译器为 node_modules\@angular\platform-b​​rowser\src\browser\ 目录中的 transfer_state.d.ts 文件抛出大约 7 个错误

违规行如下:

export declare function makeStateKey<T = void>(key: string): StateKey<T>;

整个文件如下所示:

export declare function escapehtml(text: string): string;
export declare function unescapeHtml(text: string): string;
/**
 * A type-safe key to use with `TransferState`.
 *
 * Example:
 *
 * ```
 * const COUNTER_KEY = makeStateKey<number>('counter');
 * let value = 10;
 *
 * transferState.set(COUNTER_KEY, value);
 * ```
 *
 * @experimental
 */
export declare type StateKey<T> = string & 
    __not_a_string: never;
;
/**
 * Create a `StateKey<T>` that can be used to store value of type T with `TransferState`.
 *
 * Example:
 *
 * ```
 * const COUNTER_KEY = makeStateKey<number>('counter');
 * let value = 10;
 *
 * transferState.set(COUNTER_KEY, value);
 * ```
 *
 * @experimental
 */
export declare function makeStateKey<T = void>(key: string): StateKey<T>;
/**
 * A key value store that is transferred from the application on the server side to the application
 * on the client side.
 *
 * `TransferState` will be available as an injectable token. To use it import
 * `ServerTransferStateModule` on the server and `BrowserTransferStateModule` on the client.
 *
 * The values in the store are serialized/deserialized using JSON.stringify/JSON.parse. So only
 * boolean, number, string, null and non-class objects will be serialized and deserialzied in a
 * non-lossy manner.
 *
 * @experimental
 */
export declare class TransferState 
    private store;
    private onSerializeCallbacks;
    /**
     * Get the value corresponding to a key. Return `defaultValue` if key is not found.
     */
    get<T>(key: StateKey<T>, defaultValue: T): T;
    /**
     * Set the value corresponding to a key.
     */
    set<T>(key: StateKey<T>, value: T): void;
    /**
     * Remove a key from the store.
     */
    remove<T>(key: StateKey<T>): void;
    /**
     * Test whether a key exists in the store.
     */
    hasKey<T>(key: StateKey<T>): boolean;
    /**
     * Register a callback to provide the value for a key when `toJson` is called.
     */
    onSerialize<T>(key: StateKey<T>, callback: () => T): void;
    /**
     * Serialize the current state of the store to JSON.
     */
    toJson(): string;

export declare function initTransferState(doc: Document, appId: string): TransferState;
/**
 * NgModule to install on the client side while using the `TransferState` to transfer state from
 * server to client.
 *
 * @experimental
 */
export declare class BrowserTransferStateModule 

我尝试了许多不同的 TS 编译器,并且使用了很多 tsconfig.json。我已经重新安装了 node 以确保这个文件没有以某种方式损坏。

这只是在 Visual Studio 2015 中尝试编译时出现的问题,而不是在我使用 ng server 时出现的问题。

我需要这个才能在 VS2015 中工作。但不确定发生了什么。

我的版本是:

typescript 2.3.4(尝试过 2.7.2 和 2.6.2 等) NPM 版本为 5.6.0 我的角度版本是 5.2.5 我的角度 CLI 是 1.7.1 节点是 6.10.2 Webpack 是 3.11.0

【问题讨论】:

【参考方案1】:

更新我的 Visual Studio 编译器修复了这个问题(我的 npm 编译器已经是最新的)

在 Visual Studio 中编译时,使用 Visual Studio TypeScript 编译器,即使应用中有 tsconfig.json 和 package.json 文件。要允许 Angular 应用程序通过节点或 Visual Studio 运行,那么您需要为 Visual Studio 和节点提供兼容的 TypeScript 编译器。

【讨论】:

以上是关于TS 编译器在 node_modules\@angular\platform-b​​rowser\src\browser\ 目录中为 transfer_state.d.ts 文件抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

TS 编译器在 node_modules\@angular\platform-b​​rowser\src\browser\ 目录中为 transfer_state.d.ts 文件抛出错误

TypeScript教程# 5:TS编译选项

为啥 Typescript 编译器不会将 .ts 更改为 .js?

03 Puerts for Unity 搭建 Ts 编译环境

是否有任何选项可以使用 tsc 或 ts-node 或其他任何东西更快地编译和运行 ts 代码?

为啥 vue 在第一次编译时无法识别 TS 语法,但在第二次编译时可以正常工作?