为了账号安全,请及时绑定邮箱和手机立即绑定

老师, 您好, 为什么 popup.css.d.ts中并没有写任何的声明, 在 popup.ts 中可以直接使用popupStyle['popup'], 而popupStyle.popup会报错?

// popup.css.d.ts
declare const popupStyle : {
    // readonly "popup":string;
}

export default popupStyle;
// popup.css 这里省略了部分css属性
.popup { position: fixed;}
.popup-title { flex: none;}
.popup-title h3 { font-size: 18px;}
.popup-title i { width: 30px;}
.popup-title i:hover { color: #fff;}
.popup-content { flex: 1;}
.popup-mask { position: fixed;}
// popup.ts
import popupStyle from './popup.css';
// ...
console.log('popupStyle', popupStyle); // 有值, 正常 
// popupStyle: {popup: "g-popup--231tR", popup-title: "g-popup-title--1qc1l", popup-content: "g-popup-content--1K5M-", popup-mask: "g-popup-mask--3i6ER"}
console.log('popupStyle', popupStyle['popup']); // 有值, 正常
console.log('popupStyle', popupStyle['popup-title']); // 有值, 正常
console.log('popupStyle', popupStyle.popup); // 报错  - 见图

http://img4.sycdn.imooc.com/5fad65be0001a39a08740145.jpg

正在回答

1 回答

TS中规定[]这种默认是可以不用定义的,底层会认为有默认的索引签名。点这种就必须要声明了,不过也可以简化声明,利用索引签名 [x: string]: any;


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

老师, 您好, 为什么 popup.css.d.ts中并没有写任何的声明, 在 popup.ts 中可以直接使用popupStyle['popup'], 而popupStyle.popup会报错?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信