- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试从 official documentation 学习 Typescript .而在 Interfaces section我已阅读以下内容:
TypeScript comes with a ReadonlyArray type that is the same as Array with all mutating methods removed, so you can make sure you don’t change your arrays after creation:
我已经使用以下示例代码来测试案例:
let a: number[] = [1, 2, 3, 4];
let ro: ReadonlyArray<number> = a;
ro[0] = 12; // error!
ro.push(5); // error!
ro.length = 100; // error!
a = ro; // error!
而且我发现之前的代码是这样编译成javascript的
var a = [1, 2, 3, 4];
var ro = a;
ro[0] = 12; // works
ro.push(5); // works
ro.length = 100; // works
a = ro; // works
你可以看到 ro
现在在 javascript 中是可变的,其他 javascript 代码可以改变它,为什么 typescript 没有创建 Array
对象的子类,其中可变方法为 ro
删除了?!我在这里缺少什么?!
最佳答案
总体而言,TypeScript 不会试图在运行时进行侵入。早期曾讨论过以下问题:
...可能还有更微妙但相似的问题。
结果是 TypeScript 不想接管 JavaScript,所以它在设计和编译时工作,并在最后输出惯用的 JavaScript。
这意味着在很多情况下,其他代码(例如访问修饰符和只读数组)可能会违反 TypeScript 规则 - 但这不是该项目的目标。
关于javascript - 为什么 typescript ReadonlyArrays 在编译为 javascript 时是 mutlabe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51785780/
我在 TypeScript 中有这个代码片段: const arr: ReadonlyArray = [ "123", "234" ]; arr.push("345"); TS 编译器
在某些情况下,Angular 函数和回调返回一个 ReadonlyArray。但是数组应该像往常一样使用,因为我不使用像 Redux 中的那些不可变结构。 那么如何将 ReadonlyArray 转换
一些 native Angular 函数返回一个 ReadonlyArray。一些 native Angular 回调传递 ReadonlyArrays。由于我的 typescript 代码可能会以多
代码 1: let readonlyArray: ReadonlyArray = ["test", 1, 1]; 代码 2: let readonlyArray: Readonly = ["test
背景是,我正在尝试从 .env 中读取 DatabaseType 以构建 TypeORM 连接,如下所示: const config: ConnectionOptions = { type: pr
完整的 Typescript 错误: Argument of type '(c: IAsset) => number' is not assignable to parameter of type '
我正在尝试从 official documentation 学习 Typescript .而在 Interfaces section我已阅读以下内容: TypeScript comes with a
type Foo = {a: number} let obj: Foo = {} as Readonly let arr: number[] = [] as ReadonlyArray 据我所知Rea
我是一名优秀的程序员,十分优秀!