TS 编译器在 node_modules\@angular\platform-browser\src\browser\ 目录中为 transfer_state.d.ts 文件抛出错误
Posted
技术标签:
【中文标题】TS 编译器在 node_modules\\@angular\\platform-browser\\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-browser\src\browser\ 目录中为 transfer_state.d.ts 文件抛出错误 【发布时间】:2018-08-06 13:57:32 【问题描述】:我的 TS 编译器为 node_modules\@angular\platform-browser\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-browser\src\browser\ 目录中为 transfer_state.d.ts 文件抛出错误的主要内容,如果未能解决你的问题,请参考以下文章
TS 编译器在 node_modules\@angular\platform-browser\src\browser\ 目录中为 transfer_state.d.ts 文件抛出错误
为啥 Typescript 编译器不会将 .ts 更改为 .js?
03 Puerts for Unity 搭建 Ts 编译环境