Nominal Types

Benchmark created on


Test runner

Ready to run.

Testing in
TestOps/sec
Normal
function mulNumber(n) {
	return n * 100;
}

const val = 100;

mulNumber(val);
ready
Nominal
function mulNumber(n) {
	return n * 100;
}

const val = 100;

mulNumber(val); // as Money
ready
Strongly Nominal
const moneyIdentity = Symbol();
function makeMoney(from) {
	return {
		value: from,
		[moneyIdentity]: true	
	};
}

function mulNumber(n) {
	return {
		...n,
		value: n.value * 100	
	};
}

const x = 100;

mulNumber(makeMoney(x));
ready
Strongly Nominal (Without Spreading)
const moneyIdentity = Symbol();
function makeMoney(from) {
	return {
		value: from,
		[moneyIdentity]: true	
	};
}

function mulNumber(n) {
	return {
		value: n.value * 100,
		[moneyIdentity]: true
	};
}

const x = 100;

mulNumber(makeMoney(x));
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.