彻底搞懂Type Script中的索引签名

索引签名含义

  • 索引签名是type script里的一个语法糖
  • 所谓索引,就是根据一定的指向返回相应的值
  • 比如数组的索引就是下标0,1,2....
  • type script里的索引签名有两种:数字索引和字符串索引

数字索引:通过定义接口用来对数组的约束

数字索引的本质和数组索引的查找形式一致,只是定义形式不同

如果数字索引的数组里存了其他类型,则报错

//数组,里面存的值可以为各种类型
var arr=[1,2,'3',{name:"looper"}]
console.log("普通数组的第一个值"+arr[0])

//数字索引
//约束:只有一种类型,下标必须是number类型
interface numberIndex{
    [index:number]:string
}
var numberTest: numberIndex=['1','2','3']//numberTest的类型是numberIndex,约束了数组类型,并且是string
console.log('数字索引的第一个值'+numberTest[0])

字符串索引:通过定义接口用来对对象的约束

//对象,展现形式是key--->value,value可以是任意类型
var obj={
    name:"looper",
    age:12
}
console.log("普通对象的名字是"+obj.name)

//字符串索引
//约束:只有一种类型,下标必须是string类型
interface strIndex{
    [index:string]:string
}
var strTest:strIndex={
    name:"looper--->字符串索引",
    age:"12------>字符串索引",
    sex:"男------>字符串索引"
}//strTest的类型是strIndex,约束了对象类型,并且是string
console.log("字符串索引的名字是"+strTest.name)

案例

统计一个数组中每个数字的出现次数并打印

我们采用数字索引实现

 let  comControl: { [code: string]: number } ={}//定义字符串索引类型
    let srr=[1,2,3,3,4,2,1,3,1]
    srr.forEach(x=>{
      if(Object.keys(comControl).filter(y=>y==x.toString()).length<1){
        comControl[x.toString()]=1
        return
      }
        comControl[x.toString()]++
    })
   for (let i in comControl){//打印输出的值
    console.log(i+"出现的次数是:"+comControl[i])
   }

    //1出现的次数是:3
    //2出现的次数是:2
    //3出现的次数是:3
    //4出现的次数是:1

 

### 如何在Angular项目中使用autofit.js 为了在Angular项目中集成并使用`autofit.js`,需要遵循特定的方法来确保库能够被正确加载和初始化。 #### 安装依赖项 首先,在Angular环境中引入外部JavaScript文件的一种常见方式是通过npm安装。然而对于`autofit.js`而言,如果官方并没有提供npm包,则可以直接下载源码或将CDN链接加入到项目的索引HTML文件中[^2]: ```html <script type="text/javascript" src="path/to/your/autofit.js"></script> ``` 注意路径应指向实际存储`autofit.js`的位置。如果是本地资源,请确认相对路径设置无误;若是采用CDN服务,则替换上述代码中的URL为有效的CDN地址[^3]。 #### 配置angular.json 为了让全局范围内的脚本生效,可以在`angular.json`配置文件里指定scripts数组添加对应的JS文件路径。这样做的好处是可以让Angular CLI自动处理这些静态资产的打包工作[^1]。 ```json { ... "projects": { "your-project-name": { ... "architect": { "build": { ... "options": { ... "styles": [], "scripts": [ "src/assets/js/autofit.js" ] } }, ... } } } } ``` #### 初始化Autofit实例 完成以上准备工作之后,便可以开始编写TypeScript代码调用`autofit.js`所提供的API接口了。通常情况下是在组件内部定义生命周期钩子函数(如ngAfterViewInit),用来确保DOM结构已经渲染完毕后再执行相应的逻辑操作。 ```typescript import { Component, AfterViewInit } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent implements AfterViewInit { ngAfterViewInit(): void { const autofitInstance = new Autofit(); // 假设这是创建Autofit对象的方式 autofitInstance.init(); } } ``` 需要注意的是,具体的类名、方法签名以及参数列表取决于`autofit.js`本身的实现细节。因此建议查阅其文档获取更精确的信息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值