babel / babel/proposals

First Class Protocols: Stage 1

Open
#31 1 comment 10 reactions 0 assignees View on GitHub
Proposal Issue Status: Not Started
Dominant language
No language data
Stars
435
Forks
23
PR merge metrics
No merged PRs in 30d

Description

Champion: @michaelficarra
Repo: https://github.com/michaelficarra/proposal-first-class-protocols
Slides: https://docs.google.com/presentation/d/1WrvSyslnF-5VnPj3k3HRq8MRzuiSN1kQ6ENE1iUSmDU/edit?usp=sharing
First presented at the Sept 2017 meeting

## Example

```js
protocol ProtocolName {
// declare a symbol which must be implemented
thisMustBeImplemented;

// and some methods that you get for free by implementing this protocol
youGetThisMethodForFree(...parameters) {
methodBody;
}
}

class ClassName implements ProtocolName {
[ProtocolName.thisMustBeImplemented]() {
// this is the implementation for this class
}
}

let instance = new ClassName;
instance[ProtocolName.youGetThisMethodForFree]();
```

### Implementation

- https://github.com/disnet/sweet-interfaces

Contributor guide

No contributing guide indexed for this repository

Research direction

The issue describes a first-class protocols proposal and points to the slides and the sweet-interfaces implementation repository. Start by reading the proposal materials and inspecting that implementation; no project files or tests are named here. The Stage 1 scope and completion criteria need clarification before implementation can begin.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.