欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

TypeScript里的Index signature

发布时间:2023/12/19 编程问答 31 豆豆
生活随笔 收集整理的这篇文章主要介绍了 TypeScript里的Index signature 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

参考链接:https://basarat.gitbook.io/typescript/type-system/index-signatures

看一个例子:

class Foo {constructor(public message: string){};log(){console.log(this.message)}}let foo: any = {};foo['Hello'] = new Foo('World');foo['Hello'].log(); // Worldconsole.log(c);

最后输出World

如果把一个对象作为key,结果会怎么样?JavaScript会自动调用该对象的toString实现,将结果作为key来访问。

let obj = { toString(){ console.log('toString called') return 'Hello' } } let foo: any = {}; foo[obj] = 'World'; // toString called console.log(foo[obj]); // toString called, World console.log(foo['Hello']); // World

而在TypeScript里,无法通过编译:TS2538: Type ‘{ toString(): string; }’ cannot be used as an index type.

除非显式调用toString方法:

测试结果:

结论1:TypeScript index signatures must be either string or number

看个例子:

let foo2:{ [index:string] : {message: string} } = {};

foo2是一个对象,包含了一个index signature,类型为字符串。名称可以任意取,该index指向另一个对象,该对象必须包含一个字段message,值为string.

下列代码会引起编译错误:

更多Jerry的原创文章,尽在:“汪子熙”:

总结

以上是生活随笔为你收集整理的TypeScript里的Index signature的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。