在TypeScript中将数据作为接口传递是否可以?

时间:2017-08-07 17:45:59

标签: typescript

我在我的项目中找到了一个使用界面而不是类的地方,例如:

override func viewDidLoad() {
    super.viewDidLoad()

    let layout = collectionView?.collectionViewLayout as! UICollectionViewFlowLayout
    layout.itemSize = UICollectionViewFlowLayoutAutomaticSize
    layout.estimatedItemSize = CGSize(width: 100, height: 40)
}

可以遵循这种做法,还是应该用适当的类重写?

2 个答案:

答案 0 :(得分:4)

该对象是完全可以接受的ICar(假设它被定义为我们推断的......)。

您不需要仅仅因为使用TypeScript而使用类 - 它们是类型系统的正交概念,只能在需要时使用。

答案 1 :(得分:1)

function test(car: ICar) {
     ...
}

是一个函数告诉外面的世界它只接受一个对象作为实现car接口的局部变量ICar的参数。

任何地方都没有传递任何接口。

将其视为保镖,只允许某些输入。

this.test({mark: "Volvo", colour: "red"});

是一个测试函数的调用,其对象可能会或可能不会满足接口ICar

check in typescript仅适用于编译时,因此除非您在通过tsc运行编译器时看不到错误,否则可能没问题。

请记住,如果在运行时传递不同的类型,则不会进行检查,因此代码可能是错误的。