我在我的项目中找到了一个使用界面而不是类的地方,例如:
override func viewDidLoad() {
super.viewDidLoad()
let layout = collectionView?.collectionViewLayout as! UICollectionViewFlowLayout
layout.itemSize = UICollectionViewFlowLayoutAutomaticSize
layout.estimatedItemSize = CGSize(width: 100, height: 40)
}
可以遵循这种做法,还是应该用适当的类重写?
答案 0 :(得分:4)
该对象是完全可以接受的ICar
(假设它被定义为我们推断的......)。
您不需要仅仅因为使用TypeScript而使用类 - 它们是类型系统的正交概念,只能在需要时使用。
答案 1 :(得分:1)
function test(car: ICar) {
...
}
是一个函数告诉外面的世界它只接受一个对象作为实现car
接口的局部变量ICar
的参数。
任何地方都没有传递任何接口。
将其视为保镖,只允许某些输入。
this.test({mark: "Volvo", colour: "red"});
是一个测试函数的调用,其对象可能会或可能不会满足接口ICar
。
check in typescript仅适用于编译时,因此除非您在通过tsc
运行编译器时看不到错误,否则可能没问题。
请记住,如果在运行时传递不同的类型,则不会进行检查,因此代码可能是错误的。