56,966 blogs · [ { "id": "01a0879f-f7e7-7350-b062-778b2d7683d5", "title": "Keyboard Shortcuts for Jumping and Deleting in iTerm2", "url": "https://mariusschulz.com/blog/keyboard-shortcuts-for-jumping-and-deleting-in-iterm2", "published_at": "2022-06-05T00:00:00+00:00" }, { "id": "01a0879f-f7e7-7350-b062-778b2dd05bba", "title": "Assertion Functions in TypeScript", "url": "https://mariusschulz.com/blog/assertion-functions-in-typescript", "published_at": "2022-02-13T00:00:00+00:00" }, { "id": "01a0879f-f7e7-7350-b062-778b2ea5f3f2", "title": "Optional Chaining: The ?. Operator in TypeScript", "url": "https://mariusschulz.com/blog/optional-chaining-the-operator-in-typescript", "published_at": "2021-08-02T00:00:00+00:00" }, { "id": "01a0879f-f7e7-7350-b062-778b2f3ab5f3", "title": "How to Squash the First Two Commits in a Git Repository", "url": "https://mariusschulz.com/blog/how-to-squash-the-first-two-commits-in-a-git-repository", "published_at": "2020-11-01T00:00:00+00:00" }, { "id": "01a0879f-f7e7-7350-b062-778b302472f7", "title": "Nullish Coalescing: The ?? Operator in TypeScript", "url": "https://mariusschulz.com/blog/nullish-coalescing-the-operator-in-typescript", "published_at": "2020-08-06T00:00:00+00:00" }, { "id": "01a0879f-f7e7-7350-b062-778b30ef977a", "title": "Declaring Global Variables in TypeScript", "url": "https://mariusschulz.com/blog/declaring-global-variables-in-typescript", "published_at": "2020-04-14T00:00:00+00:00" }, { "id": "01a0879f-f7e7-7350-b062-778b31274501", "title": "Concatenating Arrays in JavaScript", "url": "https://mariusschulz.com/blog/concatenating-arrays-in-javascript", "published_at": "2020-03-31T00:00:00+00:00" }, { "id": "01a0879f-f7e7-7350-b062-778b312ba3ac", "title": "The Omit Helper Type in TypeScript", "url": "https://mariusschulz.com/blog/the-omit-helper-type-in-typescript", "published_at": "2020-03-28T00:00:00+00:00" }, { "id": "01a0879f-f7e7-7350-b062-778b31631ee6", "title": "Fast Searching with ripgrep", "url": "https://mariusschulz.com/blog/fast-searching-with-ripgrep", "published_at": "2020-03-19T00:00:00+00:00" }, { "id": "01a0879f-f7e7-7350-b062-778b3192fada", "title": "Const Assertions in Literal Expressions in TypeScript", "url": "https://mariusschulz.com/blog/const-assertions-in-literal-expressions-in-typescript", "published_at": "2019-12-15T00:00:00+00:00" }, { "id": "01a0bb59-d01d-7017-949a-3227f7526040", "title": "Read-Only Array and Tuple Types in TypeScript", "url": "https://mariusschulz.com/blog/read-only-array-and-tuple-types-in-typescript", "published_at": "2019-09-16T00:00:00+00:00" }, { "id": "01a0bb59-d01d-7017-949a-3227f7d99f18", "title": "The --showConfig Compiler Option in TypeScript", "url": "https://mariusschulz.com/blog/the-showconfig-compiler-option-in-typescript", "published_at": "2019-08-27T00:00:00+00:00" }, { "id": "01a0bb59-d01d-7017-949a-3227f83e649e", "title": "Setting the Node.js Version for an Azure DevOps Build", "url": "https://mariusschulz.com/blog/setting-the-node-js-version-for-an-azure-devops-build", "published_at": "2019-08-06T00:00:00+00:00" }, { "id": "01a0bb59-d01d-7017-949a-3227f93947b2", "title": "The unknown Type in TypeScript", "url": "https://mariusschulz.com/blog/the-unknown-type-in-typescript", "published_at": "2019-05-15T00:00:00+00:00" }, { "id": "01a0bb59-d01d-7017-949a-3227f9fcf23f", "title": "Importing JSON Modules in TypeScript", "url": "https://mariusschulz.com/blog/importing-json-modules-in-typescript", "published_at": "2019-04-20T00:00:00+00:00" }, { "id": "01a0bb59-d01d-7017-949a-3227fadf457f", "title": "Passing Generics to JSX Elements in TypeScript", "url": "https://mariusschulz.com/blog/passing-generics-to-jsx-elements-in-typescript", "published_at": "2019-03-25T00:00:00+00:00" }, { "id": "01a0bb59-d01d-7017-949a-3227fb7911f6", "title": "Mapped Type Modifiers in TypeScript", "url": "https://mariusschulz.com/blog/mapped-type-modifiers-in-typescript", "published_at": "2019-02-10T00:00:00+00:00" }, { "id": "01a0bb59-d01d-7017-949a-3227fba6a2f0", "title": "Conditional Types in TypeScript", "url": "https://mariusschulz.com/blog/conditional-types-in-typescript", "published_at": "2019-01-09T00:00:00+00:00" }, { "id": "01a0bb59-d01d-7017-949a-3227fc6e8c5d", "title": "JavaScript Promises in Depth", "url": "https://mariusschulz.com/blog/javascript-promises-in-depth", "published_at": "2018-12-16T00:00:00+00:00" }, { "id": "01a0bb59-d01d-7017-949a-3227fcb7b3d6", "title": "Using Promise.prototype.finally() in TypeScript", "url": "https://mariusschulz.com/blog/using-promise-prototype-finally-in-typescript", "published_at": "2018-11-27T00:00:00+00:00" }, { "id": "01a0bb61-e97d-71ea-943a-71c7af6aed2f", "title": "Syntax Highlighting for yarn.lock Files in Visual Studio Code", "url": "https://mariusschulz.com/blog/syntax-highlighting-for-yarn-lock-files-in-visual-studio-code", "published_at": "2018-11-15T00:00:00+00:00" }, { "id": "01a0bb61-e97d-71ea-943a-71c7afe73ac5", "title": "Per-File JSX Factories in TypeScript", "url": "https://mariusschulz.com/blog/per-file-jsx-factories-in-typescript", "published_at": "2018-07-08T00:00:00+00:00" }, { "id": "01a0bb61-e97d-71ea-943a-71c7b09c9e2f", "title": "Strict Property Initialization in TypeScript", "url": "https://mariusschulz.com/blog/strict-property-initialization-in-typescript", "published_at": "2018-05-20T00:00:00+00:00" }, { "id": "01a0bb61-e97d-71ea-943a-71c7b193a755", "title": "Numeric Separators in TypeScript", "url": "https://mariusschulz.com/blog/numeric-separators-in-typescript", "published_at": "2018-02-16T00:00:00+00:00" }, { "id": "01a0bb61-e97d-71ea-943a-71c7b198fa1c", "title": "JSX Fragment Syntax in TypeScript", "url": "https://mariusschulz.com/blog/jsx-fragment-syntax-in-typescript", "published_at": "2018-02-09T00:00:00+00:00" }, { "id": "01a0bb61-e97d-71ea-943a-71c7b2881bc1", "title": "Optional catch Binding in TypeScript", "url": "https://mariusschulz.com/blog/optional-catch-binding-in-typescript", "published_at": "2018-01-30T00:00:00+00:00" }, { "id": "01a0bb61-e97d-71ea-943a-71c7b34db4c1", "title": "Code-Splitting a TypeScript Application with import() and webpack", "url": "https://mariusschulz.com/blog/code-splitting-a-typescript-application-with-import-and-webpack", "published_at": "2018-01-14T00:00:00+00:00" }, { "id": "01a0bb61-e97d-71ea-943a-71c7b412defd", "title": "Dynamic import() Expressions in TypeScript", "url": "https://mariusschulz.com/blog/dynamic-import-expressions-in-typescript", "published_at": "2018-01-14T00:00:00+00:00" }, { "id": "01a0bb61-e97d-71ea-943a-71c7b4177bf0", "title": "Spelling Correction in TypeScript", "url": "https://mariusschulz.com/blog/spelling-correction-in-typescript", "published_at": "2017-12-08T00:00:00+00:00" }, { "id": "01a0bb61-e97d-71ea-943a-71c7b45e1962", "title": "Weak Type Detection in TypeScript", "url": "https://mariusschulz.com/blog/weak-type-detection-in-typescript", "published_at": "2017-12-01T00:00:00+00:00" }, { "id": "01a0bb68-2284-7117-9376-25970583f8de", "title": "Advanced Static Types in TypeScript", "url": "https://mariusschulz.com/blog/advanced-static-types-in-typescript", "published_at": "2017-11-09T00:00:00+00:00" }, { "id": "01a0bb68-2284-7117-9376-259705ded0cb", "title": "String Enums in TypeScript", "url": "https://mariusschulz.com/blog/string-enums-in-typescript", "published_at": "2017-10-27T00:00:00+00:00" }, { "id": "01a0bb68-2284-7117-9376-259706506198", "title": "Downlevel Iteration for ES3/ES5 in TypeScript", "url": "https://mariusschulz.com/blog/downlevel-iteration-for-es3-es5-in-typescript", "published_at": "2017-06-30T00:00:00+00:00" }, { "id": "01a0bb68-2284-7117-9376-25970749b13f", "title": "Type-Checking JavaScript Files with --checkJs in TypeScript", "url": "https://mariusschulz.com/blog/type-checking-javascript-files-with-checkjs-in-typescript", "published_at": "2017-06-16T00:00:00+00:00" }, { "id": "01a0bb68-2284-7117-9376-259707b89d31", "title": "Global Antiforgery Token Validation in ASP.NET Core", "url": "https://mariusschulz.com/blog/global-antiforgery-token-validation-in-asp-net-core", "published_at": "2017-06-11T00:00:00+00:00" }, { "id": "01a0bb68-2284-7117-9376-259707be91d1", "title": "The --strict Compiler Option in TypeScript", "url": "https://mariusschulz.com/blog/the-strict-compiler-option-in-typescript", "published_at": "2017-06-09T00:00:00+00:00" }, { "id": "01a0bb68-2284-7117-9376-259707df248d", "title": "Generic Parameter Defaults in TypeScript", "url": "https://mariusschulz.com/blog/generic-parameter-defaults-in-typescript", "published_at": "2017-06-02T00:00:00+00:00" }, { "id": "01a0bb68-2284-7117-9376-2597082189ff", "title": "Mixin Classes in TypeScript", "url": "https://mariusschulz.com/blog/mixin-classes-in-typescript", "published_at": "2017-05-26T00:00:00+00:00" }, { "id": "01a0bb68-2284-7117-9376-259708d2037e", "title": "Asynchronous JavaScript with async/await", "url": "https://mariusschulz.com/blog/asynchronous-javascript-with-async-await", "published_at": "2017-05-05T00:00:00+00:00" }, { "id": "01a0bb68-2284-7117-9376-259709447e48", "title": "Null-Checking for Expression Operands in TypeScript", "url": "https://mariusschulz.com/blog/null-checking-for-expression-operands-in-typescript", "published_at": "2017-03-10T00:00:00+00:00" }, { "id": "01a0bb6c-4921-723c-8a73-f5d6fe6918c2", "title": "Dotted Properties and String Index Signatures in TypeScript", "url": "https://mariusschulz.com/blog/dotted-properties-and-string-index-signatures-in-typescript", "published_at": "2017-03-03T00:00:00+00:00" }, { "id": "01a0bb6c-4921-723c-8a73-f5d6feb6f5ac", "title": "Detecting the Operating System in .NET Core", "url": "https://mariusschulz.com/blog/detecting-the-operating-system-in-net-core", "published_at": "2017-02-28T00:00:00+00:00" }, { "id": "01a0bb6c-4921-723c-8a73-f5d6ffad5d9c", "title": "The object Type in TypeScript", "url": "https://mariusschulz.com/blog/the-object-type-in-typescript", "published_at": "2017-02-24T00:00:00+00:00" }, { "id": "01a0bb6c-4921-723c-8a73-f5d700295d1c", "title": "Untyped Imports in TypeScript", "url": "https://mariusschulz.com/blog/untyped-imports-in-typescript", "published_at": "2017-02-17T00:00:00+00:00" }, { "id": "01a0bb6c-4921-723c-8a73-f5d700c77f14", "title": "Literal Type Widening in TypeScript", "url": "https://mariusschulz.com/blog/literal-type-widening-in-typescript", "published_at": "2017-02-04T00:00:00+00:00" }, { "id": "01a0bb6c-4921-723c-8a73-f5d700e172c1", "title": "Improved Inference for Literal Types in TypeScript", "url": "https://mariusschulz.com/blog/improved-inference-for-literal-types-in-typescript", "published_at": "2017-01-27T00:00:00+00:00" }, { "id": "01a0bb6c-4921-723c-8a73-f5d701a1fc74", "title": "Mapped Types in TypeScript", "url": "https://mariusschulz.com/blog/mapped-types-in-typescript", "published_at": "2017-01-20T00:00:00+00:00" }, { "id": "01a0bb6c-4921-723c-8a73-f5d701e9eb00", "title": "TypeScript vs. Flow", "url": "https://mariusschulz.com/blog/typescript-vs-flow", "published_at": "2017-01-13T00:00:00+00:00" }, { "id": "01a0bb6c-4921-723c-8a73-f5d70279191f", "title": "keyof and Lookup Types in TypeScript", "url": "https://mariusschulz.com/blog/keyof-and-lookup-types-in-typescript", "published_at": "2017-01-06T00:00:00+00:00" }, { "id": "01a0bb6c-4921-723c-8a73-f5d7035a6780", "title": "Object Rest and Spread in TypeScript", "url": "https://mariusschulz.com/blog/object-rest-and-spread-in-typescript", "published_at": "2016-12-23T00:00:00+00:00" }, { "id": "01a0bb70-3a7e-734d-b69b-a976fc922749", "title": "External Helpers Library in TypeScript", "url": "https://mariusschulz.com/blog/external-helpers-library-in-typescript", "published_at": "2016-12-16T00:00:00+00:00" }, { "id": "01a0bb70-3a7e-734d-b69b-a976fd23f955", "title": "Compiling async/await to ES3/ES5 in TypeScript", "url": "https://mariusschulz.com/blog/compiling-async-await-to-es3-es5-in-typescript", "published_at": "2016-12-09T00:00:00+00:00" }, { "id": "01a0bb70-3a7e-734d-b69b-a976fd2c93eb", "title": "Typing Functions in TypeScript", "url": "https://mariusschulz.com/blog/typing-functions-in-typescript", "published_at": "2016-12-02T00:00:00+00:00" }, { "id": "01a0bb70-3a7e-734d-b69b-a976fdd1d94e", "title": "Built-In Type Declarations in TypeScript", "url": "https://mariusschulz.com/blog/built-in-type-declarations-in-typescript", "published_at": "2016-11-25T00:00:00+00:00" }, { "id": "01a0bb70-3a7e-734d-b69b-a976feb854b1", "title": "The never Type in TypeScript", "url": "https://mariusschulz.com/blog/the-never-type-in-typescript", "published_at": "2016-11-18T00:00:00+00:00" }, { "id": "01a0bb70-3a7e-734d-b69b-a976fed4630f", "title": "More Literal Types in TypeScript", "url": "https://mariusschulz.com/blog/more-literal-types-in-typescript", "published_at": "2016-11-10T00:00:00+00:00" }, { "id": "01a0bb70-3a7e-734d-b69b-a976ff64c868", "title": "Tagged Union Types in TypeScript", "url": "https://mariusschulz.com/blog/tagged-union-types-in-typescript", "published_at": "2016-11-03T00:00:00+00:00" }, { "id": "01a0bb70-3a7e-734d-b69b-a976ffcffd24", "title": "Read-Only Properties in TypeScript", "url": "https://mariusschulz.com/blog/read-only-properties-in-typescript", "published_at": "2016-10-31T00:00:00+00:00" }, { "id": "01a0bb70-3a7e-734d-b69b-a97700948b36", "title": "Acquiring Type Declaration Files in TypeScript", "url": "https://mariusschulz.com/blog/acquiring-type-declaration-files-in-typescript", "published_at": "2016-10-23T00:00:00+00:00" }, { "id": "01a0bb70-3a7e-734d-b69b-a9770192eeb7", "title": "Announcing TypeScript Weekly", "url": "https://mariusschulz.com/blog/announcing-typescript-weekly", "published_at": "2016-10-21T00:00:00+00:00" }, { "id": "01a0bb73-bb90-710d-b244-b87cf9c889f5", "title": "Control Flow Based Type Analysis in TypeScript", "url": "https://mariusschulz.com/blog/control-flow-based-type-analysis-in-typescript", "published_at": "2016-09-30T00:00:00+00:00" }, { "id": "01a0bb73-bb90-710d-b244-b87cf9d0a3a0", "title": "Non-Nullable Types in TypeScript", "url": "https://mariusschulz.com/blog/non-nullable-types-in-typescript", "published_at": "2016-09-28T00:00:00+00:00" }, { "id": "01a0bb73-bb90-710d-b244-b87cfac8fbba", "title": "Death to Confusing ECMAScript Version Names", "url": "https://mariusschulz.com/blog/death-to-confusing-ecmascript-version-names", "published_at": "2016-08-31T00:00:00+00:00" }, { "id": "01a0bb73-bb90-710d-b244-b87cfb3dfad6", "title": "Function Overloads in TypeScript", "url": "https://mariusschulz.com/blog/function-overloads-in-typescript", "published_at": "2016-08-18T00:00:00+00:00" }, { "id": "01a0bb73-bb90-710d-b244-b87cfb738641", "title": "Simulating Latency in ASP.NET Core", "url": "https://mariusschulz.com/blog/simulating-latency-in-asp-net-core", "published_at": "2016-08-06T00:00:00+00:00" }, { "id": "01a0bb73-bb90-710d-b244-b87cfc089431", "title": "Generating Route URLs in ASP.NET Core MVC", "url": "https://mariusschulz.com/blog/generating-route-urls-in-asp-net-core-mvc", "published_at": "2016-07-21T00:00:00+00:00" }, { "id": "01a0bb73-bb90-710d-b244-b87cfc9cfc86", "title": "Securing Authentication Cookies in ASP.NET Core", "url": "https://mariusschulz.com/blog/securing-authentication-cookies-in-asp-net-core", "published_at": "2016-07-19T00:00:00+00:00" }, { "id": "01a0bb73-bb90-710d-b244-b87cfd086430", "title": "Removing Elements from JavaScript Arrays", "url": "https://mariusschulz.com/blog/removing-elements-from-javascript-arrays", "published_at": "2016-07-16T00:00:00+00:00" }, { "id": "01a0bb73-bb90-710d-b244-b87cfdc420dd", "title": "Speeding Up Babel Transpilation with Compact Mode", "url": "https://mariusschulz.com/blog/speeding-up-babel-transpilation-with-compact-mode", "published_at": "2016-07-12T00:00:00+00:00" }, { "id": "01a0bb73-bb90-710d-b244-b87cfe55ea8a", "title": "Bundling ES2015 Modules with TypeScript and Rollup", "url": "https://mariusschulz.com/blog/bundling-es2015-modules-with-typescript-and-rollup", "published_at": "2016-06-27T00:00:00+00:00" } ] posts Claim your blog
Back to Home — Marius Schulz
Blog · corpus.blog/blogs/mariusschulz.com/posts

Home — Marius Schulz

mariusschulz.com

2022

2021

2020

2019

2018

2017

2016