请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于额外的属性检查的困惑

接口额外的属性检查一节中:

还有最后一种跳过这些检查的方式,这可能会让你感到惊讶,它就是将这个对象赋值给一个另一个变量: 因为 squareOptions 不会经过额外属性检查,所以编译器不会报错。

let squareOptions = { colour: 'red', width: 100 }
let mySquare = createSquare(squareOptions)

要留意,在像上面一样的简单代码里,你可能不应该去绕开这些检查。

对这段描述很困惑, 按我的理解ts会去检查createSquare函数调用时传递的参数类型,另起一个变量做参数为什么就不检查这个参数了?而且我们实际工作中都是另起变量作为函数参数的,这样做也不是开发者故意要去绕开这些检查啊?
很困惑,这让我感觉TS就像是魔法一样。

正在回答

1回答

这个是 TS 的实现机制决定的只检查字面量还不检查函数。猜测 TS 这么做的原因是变量检查难度比较大比如变量的来源追溯可能会非常复杂而字面量就非常容易了。

0 回复 有任何疑惑可以回复我~
  • 提问者 内六角 #1
    非常感谢
    回复 有任何疑惑可以回复我~ 2019-12-15 08:12:48
  • 使用的 3.7.5 版本,已经会检查这种变量的形式了。
    回复 有任何疑惑可以回复我~ 2020-03-09 23:25:43
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信