{"componentChunkName":"component---src-templates-blog-post-js","path":"/blog/apprentissage-du-jour-3/","result":{"data":{"site":{"siteMetadata":{"title":"Instant fixe","author":"LucasPerso"}},"mdx":{"id":"656fa845-4161-5f43-a740-f5b12d4f756f","excerpt":"La bibliothèque  Tiny Invariant  permet de faire du  rétrecissement de type  et de balancer une exception au runtime lorsque le type ne convient pas. Ça…","body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"path\": \"tiny-invariant\",\n  \"date\": \"2022-03-26T18:08:54.985Z\",\n  \"title\": \"Apprentissage du jour #3\",\n  \"description\": \"Package NPM : Tiny Invariant\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"La biblioth\\xE8que \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/alexreardon/tiny-invariant\"\n  }, \"Tiny Invariant\"), \" permet de faire du \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.typescriptlang.org/docs/handbook/2/narrowing.html\"\n  }, \"r\\xE9trecissement de type\"), \" et de balancer une exception au runtime lorsque le type ne convient pas.\"), mdx(\"p\", null, \"\\xC7a ressemble beaucoup \\xE0 la biblioth\\xE8que \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/webmozarts/assert\"\n  }, \"Assert\"), \" en PHP.\"), mdx(\"p\", null, \"C\\u2019est surtout pratique pour \\xE9valuer des types de mani\\xE8re dynamique, par exemple pour s\\u2019assurer que les donn\\xE9es rentr\\xE9es par un utilisateur sont du bon type o\\xF9 que le fichier t\\xE9l\\xE9vers\\xE9 est bien interpr\\xEAt\\xE9.\"), mdx(\"style\", {\n    \"className\": \"grvsc-styles\"\n  }, \"\\n  .grvsc-container {\\n    overflow: auto;\\n    -webkit-overflow-scrolling: touch;\\n    padding-top: 1rem;\\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\\n    padding-bottom: 1rem;\\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\\n    border-radius: 8px;\\n    border-radius: var(--grvsc-border-radius, 8px);\\n    font-feature-settings: normal;\\n  }\\n  \\n  .grvsc-code {\\n    display: inline-block;\\n    min-width: 100%;\\n  }\\n  \\n  .grvsc-line {\\n    display: inline-block;\\n    box-sizing: border-box;\\n    width: 100%;\\n    padding-left: 1.5rem;\\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\\n    padding-right: 1.5rem;\\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\\n  }\\n  \\n  .grvsc-line-highlighted {\\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\\n  }\\n  \\n\"));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"title":"Apprentissage du jour #3","date":"March 26, 2022","description":"Package NPM : Tiny Invariant"}}},"pageContext":{"slug":"/apprentissage-du-jour-3/","previous":{"fields":{"slug":"/daily-experiment-recording-project-2022-2/"},"frontmatter":{"title":"Daily Experiment Recording Project 2022 #2"}},"next":{"fields":{"slug":"/daily-experiment-recording-project-2022-3/"},"frontmatter":{"title":"Daily Experiment Recording Project 2022 #3"}}}},"staticQueryHashes":["3663586608","63159454"]}