1.7.4 • Published 4 months ago

type-czech v1.7.4

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

TypeCzech

Ditch TypeScript and use TypeCzech runtime type checking instead. Live editable JSFiddles with visible type checking in the list below.

Shortest Possible Live Example

The shortest easiest possible example on a live editable JSFiddle.

    type_czech = TypeCzech('LOG-ERRORS')                  // type checking code
                
    function BEFORE_addXY(x, y) {                                            
        return type_czech.checkParam_type([x, y], ['number', 'number'])      
    }                                                                        
    addXY = type_czech.linkUp(addXY, BEFORE_addXY)                           
                                                                             
function addXY(x, y) { return x + y }                     // your code

console.log(" 5 + 5     = ", addXY(5, 5))
linesConsole(2)
console.log(" 6 + 'six' = ", addXY(6, 'six'))             // type error
linesConsole(1)
console.log(" 7 + 7     = ", addXY(7, 7))

Base Example

The motivation is to verify function parameters before execution, and function results after completion with PRE_yourRoutine() and POST_yourRoutine() functions. The example below will not log any type errors in Node.js nor the browser as there are no type errors.

diagram

Run this live on an editable JSFiddle

diagram

React Node.js SSR Barebones Example

This example is live on Render.com as a slow to start, free hosted site that takes 30-180 seconds to start. View the browser console for type errors as below. The barebones source needs three commands to start.

Program started with "npm run dev"

diagram

diagram

Program started with "npm run prod"

When the program is launched in production mode, all type checking stops. The incorrect string type is no longer caught.

diagram

diagram

A live editable JSFiddle 707 - React JSX example shows how to type check the parameters of a React list component, as well as the properties of the structure returned.

Node.js Async/Await Example

The live Run Time Type Checking Square Root Finder, 150 seconds to start on free hosting, verifies that live aysnc server calls have correct number types. The types checked for are 'Roman Numerals', 'Word Numbers', 'Floats', and 'Integers'. Run locally with the Square Root Finder source.

The server responds with the square root of XVI is in fact IV.

roman 'xvi' romanSqr('xvi')

Here we see an error when we try to calculate the square root of 16 as a roman number on the server. Locally we get the "'16' is not a valid roman number", and since the server decides that this is a "400 Bad Request", TypeCzech warns us that the server never returns a valid answer with the "POST_serverGetSqrt E did not return within 3007 milliseconds" error message.

The idea is to simulate a non-returning server crash.

roman 16 romanSqr(16)

The server responds with the square root of 16 is 4.

roman 'xvi' integerSqr(16)

A live editable JSFiddle 703 - Async Await shows how to check return types inside an await function.

Live Editable Type-Czech JSFiddle Examples

Contents of 74 live editable examples. Best 'Editor layout' is 'Right results'.

00-Readme-Example01 - What is TypeCzech?02 - Validate Parameters by Value03 - Turn Off TypeCzech by Not Loading Library04 - Turn off by Not Loading Checking Functions
05 - Verify Return Results by Value06 - Validate Parameters And Results07 - Mutated Function Parameters08 - Mutated Recursive Function Parameters09 - Closure Parameters, Results, and Methods
10 - Class Parameters, Results, and Methods11 - Object Properties12 - Object Interface13 - Parameter and Result Multi Scalar Types14 - Array and Object Types with Parameter and Results
15 - Lone Single Type Parameter Functions16 - Arrays with One Type17 - Variadic Functions18 - Class Type Checks19 - Lone Empty Parameter and Result
20 - Multiple Empty Parameters and Results21 - Extra Optional Parameters22 - Empty Checks with Extra Optional Parameters23 - Typed Either Checks24 - Empty Either Checks
25 - Default Parameters26 - Empty Abbreviations27 - Types, Emptiness, and Extra Parameters28 - Accept Null and Undefined Values29 - Class Object Type Checks
30 - HTML Element Type Checks31 - Extended Class Type Checks32 - Extended Closure Type Checks33 - Count Parameter Checking Function Calls34 - Parameter Check Events
35 - Throw, Log, or Ignore36 - Turn-On, Turn-Off37 - Readme Example Arrow Functions38 - Every Check39 - Check Asserts
 40 - Prescribed Use41 - Lens Example42 - Extended Objects43 - PHP On Off Extending Classes
Classes101 - Extended Classes Inline102 - Extended Classes Imported103 - Extended Classes Production
Closures201 - Closure Modules Inline202 - Closure Modules Imported203 - Closure Modules Production204 - Extending Closures Single
IIFEs301 - IIFE Modules Inline302 - IIFE Modules Imported303 - IIFE Modules Production304 - Extending IIFEs Single
Class Free401 - ClassFree Constructors Inline402 - ClassFree Constructors Imported403 - ClassFree Constructors Production404 - Extending ClassFree Single
Prototypes501 - Inherited Prototypes Inline502 - Inherited Prototypes Imported503 - Inherited Prototypes Production504 - Extending Prototypes Single
OLOO601 - Created OLOO Inline602 - Created OLOO Imported603 - Created OLOO Production604 - Extending OLOO Single
 700 - Simple-Example701 - Array of Objects702 - DeClassify703 - Async Await
704 - Ramda Curry705 - Sensible Switching706 - Elegant On Off707 - React JSX708 - Monad Type Checking

To Install the Package

NPM JavaScript library for Node.js projects.

npm i type-czech

Require for Node.js is Supported, as Well as Import for React

const { TypeCzech_obj } = require("./node_modules/type-czech/type-czech-require.js");

import TypeCzech_obj from "./node_modules/type-czech/type-czech-import.js";

Online Examples

Why Use

Function Expression Error - Uncaught ReferenceError: myFunction is not defined

Lottery Example

Assert Pollution

The Idea

The Recipe

Type Signatures

Empty Strings, Arrays, and Objects

JSFiddle - 74 Page Live Online Editable Tutorial

Local Filesystem - 74 Page Local Editable Tutorial

16 Simple How To Snippets

TypeCzech API

Node.js Only Examples

Browser and Node.js Tests

Recommended Techniques

Production TypeCzech

FAQ

Dependencies

Run Tests

Compile New Versions

Created by

Steen Hansen

© 2024 Steen Hansen

1.7.4

4 months ago

1.7.3

4 months ago

1.7.1

4 months ago

1.7.0

4 months ago

1.6.0

4 months ago

1.5.3

11 months ago

1.5.2

11 months ago

1.5.1

11 months ago

1.4.3

2 years ago

1.4.2

2 years ago

1.5.0

2 years ago

1.4.1

2 years ago

1.4.0

2 years ago

1.0.0

2 years ago

0.0.3

3 years ago

0.0.2

3 years ago