<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/elixir-protocols-behaviours-for-javascript-typescript-developers-ipfhqlsq6" -->

---
title: Elixir Protocols &amp; Behaviours for JavaScript/TypeScript...
description: Learn about the difference and similarity between behaviours and protocols in Elixir. Behaviours define a set of functions that a module must implement, while...
canonical: https://daily.dev/posts/elixir-protocols-behaviours-for-javascript-typescript-developers-ipfhqlsq6
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Elixir Protocols &amp; Behaviours for JavaScript/TypeScript Developers | daily.dev
og:description: Learn about the difference and similarity between behaviours and protocols in Elixir. Behaviours define a set of functions that a module must implement, while...
og:url: https://daily.dev/posts/elixir-protocols-behaviours-for-javascript-typescript-developers-ipfhqlsq6
og:image: https://api.daily.dev/og/posts/IPfhQLSq6.png
og:image:alt: Elixir Protocols &amp; Behaviours for JavaScript/TypeScript Developers
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Elixir Protocols & Behaviours for JavaScript/TypeScript Developers

**[RisingStack](https://daily.dev/sources/risingstack)** · 11 min read · 5 upvotes · 0 comments

## Summary

Learn about the difference and similarity between behaviours and protocols in Elixir. Behaviours define a set of functions that a module must implement, while protocols allow you to implement the same functionality for different types of data. Understanding these concepts is useful for understanding library documentation and designing software with Elixir.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://blog.risingstack.com/elixir-protocols-behaviours/>

---

Tags: [#typescript](https://daily.dev/tags/typescript), [#elixir](https://daily.dev/tags/elixir)

[View this post on daily.dev](https://daily.dev/posts/elixir-protocols-behaviours-for-javascript-typescript-developers-ipfhqlsq6)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Elixir Protocols & Behaviours for JavaScript/TypeScript Developers","url":"https://daily.dev/posts/elixir-protocols-behaviours-for-javascript-typescript-developers-ipfhqlsq6","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/elixir-protocols-behaviours-for-javascript-typescript-developers-ipfhqlsq6"},"datePublished":"2024-05-16T04:08:36.015Z","dateModified":"2024-05-16T04:08:34.611Z","description":"Learn about the difference and similarity between behaviours and protocols in Elixir. Behaviours define a set of functions that a module must implement, while...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/004a8db290a58284fcce9b1b0a016f59?_a=AQAEuiZ","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/004a8db290a58284fcce9b1b0a016f59?_a=AQAEuiZ","isAccessibleForFree":true,"articleSection":"RisingStack","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"RisingStack","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/risingstack","url":"https://daily.dev/sources/risingstack"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/elixir-protocols-behaviours-for-javascript-typescript-developers-ipfhqlsq6","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":5},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"typescript,elixir","timeRequired":"PT11M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"RisingStack","item":"https://daily.dev/sources/risingstack"},{"@type":"ListItem","position":3,"name":"Elixir Protocols & Behaviours for JavaScript/TypeScript Developers"}]}
```

