深いインターネットでは、class A extends B with C { ... }
のような構造に遭遇しましたが、今はリンクしていません。抽象クラスを拡張しながら、クラスのマクロのようでした。ES6 js "with"キーワード
これは標準ですか? (私はグーグルで、唯一の古いwith
が今削除され、クロムインラインコンソールがエラーをスローすることを見つける)
深いインターネットでは、class A extends B with C { ... }
のような構造に遭遇しましたが、今はリンクしていません。抽象クラスを拡張しながら、クラスのマクロのようでした。ES6 js "with"キーワード
これは標準ですか? (私はグーグルで、唯一の古いwith
が今削除され、クロムインラインコンソールがエラーをスローすることを見つける)
とから拡張できる特徴を持っています。 Annex A.4 - Functions and Classesからは、構文が
ClassDeclaration[Yield, Default] :
classBindingIdentifier[?Yield]ClassTail[?Yield]
[+Default] classClassTail[?Yield]
ClassExpression[Yield] :
classBindingIdentifier[?Yield]optClassTail[?Yield]
ClassTail[Yield] :
ClassHeritage[?Yield]opt{ClassBody[?Yield]opt}
ClassHeritage[Yield] :
extendsLeftHandSideExpression[?Yield]
あるので ClassTailはextends something
オプションとクラス本体の両方を含んでいる部分です。そしてsomething
はのLeftHandSideExpressionでなければなりません。with
はそこにありません。
これはECMAScript 6 Classes標準の一部ではありません。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes
with
キーワードは、複数の継承を示すために一部のプログラミング言語で使用されています。例えば
Scalaはクラスがそれは標準ではありませんwith
キーワード
trait Drawable {
def draw() { }
}
trait Cowboy extends Drawable {
override def draw() { println("Bang!") }
}
trait Artist extends Drawable {
override def draw() { println("A pretty painting") }
}
class CowboyArtist extends Cowboy with Artist
見つけた場所にリンクしてください。いいえ、それはES7にはありませんが、多くのクラスの提案の一部です。 – Bergi
おそらくそれは提案でした。もし私がもう一度それを見つけることができれば - 私はこの質問をしません。 –
[この記事は](http://justinfagnani.com/2015/12/21/real-mixins-with-javascript-classes/)[ダーツのmixin構文](https://www.dartlang.org/articles/)を参照してください。言語/ミックスイン)をES6クラス – CodingIntrigue