structural-typing

    0热度

    1回答

    我想重用现有的提取器并撰写它们。 完美匹配B => Option[C]。 但我很困惑,我怎么能在代码中表达这样的关系。 明显的方法不适用于一个很好的理由: type Extractor[F,T] = { def unapply(from : F) : Option[T] } def bind[A,B,C](l : Extractor[A,B], r : Extractor[B,C]

    1热度

    1回答

    中使用的方法我正在浏览斯卡拉代码,并发现应用方法也用于type。 例子: type Common = { def apply: {val func: {} => {val a: A}; val c: C} => {val b: B} } 是什么上面的代码是什么意思? 据我所知,这意味着Common是指所有包含apply方法的类型。但是,问题是什么样的应用方法是否意味着什么?应用方法

    2热度

    1回答

    这似乎是一个简单的事情,但我不明白...... 这编译: object CanFoo1 { def foo(): Unit = { println("Yup, I can foo alright") } } object CanFoo2 { def foo(): Unit = { println("And I can foo with the

    2热度

    1回答

    我目前正在学习结构分型。我对这样的想法持怀疑态度,认为两种类型被认为是相同的,只是因为它们碰巧有一部分共同的结构。这感觉很像静态鸭子打字,它完全忽略了类型的语义层次。所以我把在普通对象的流动的结构打字定睛一看,也遇到以下行为: const o:{} = {foo: true}; o.foo; // type error {}是一种结构类型和所有普通对象的超类型。因此,我可以用它注释o,因为{

    2热度

    1回答

    在流动结构亚型可能会导致信息丢失: type O = {x: number, y: number}; type P = {x: number, y: number, z: number} function f(o: O) { return o.x * 2, o.y * 2, o; } const p: P = {x: 2, y: 3, z: 100}; const r =

    0热度

    1回答

    我知道typescript有一个结构类型化机制。然而,我所期望的,如果你有一个这样的类: 和一个这样的定义: class ReadonlyCountry { readonly id: string; readonly name: string; } ,该类型系统将显示碰撞,如果你与ReadonlyCountry类型返回一个对象在返回类型为Country的函数中。看起来情

    -1热度

    2回答

    的任何量的我有一个这样的对象: { "0001": "a", "0002": "b", "0003": "c", ... } 我可以写一个打字稿接口,它描述了这种类型?

    6热度

    2回答

    是什么关系这样 export class Comment { likes: string; comment: string; constructor(likes: string, comment: string){ this.comment = comment; this.likes = likes; } } 这 export i

    4热度

    1回答

    打字稿是否支持结构类型兼容性的直接测试? C#支持is运营商和类型的表面IsAssignableFrom(object instance) if (foo is SomeType) ... if (SomeType.IsAssignableFrom(foo)) ... 有没有在打字稿进行这种检查的一些直接的方式或者我有探测所需的每一个成员的? instanceof可能会为手头的情况做,但不尊

    0热度

    1回答

    在GO,我了解到, 1) 程序员可以只定义上命名的类型(X)或指针(*X)的方法来命名的类型 2) X类型的显式方法定义隐式定义了类型*X和的相同方法,反之亦然,因此,我的小写安定是,如果我声明, func (c Cat) foo(){ //do stuff_ } 和声明, func (c *Cat) foo(){ // do stuff_ } 然后去编译器为, C