import {expectError, expectType} from 'tsd'; import { Model, BasicModel } from "../src/object-model" expectType(BasicModel(Number)(0)) expectType(new Model(Number)(Infinity)) expectError(BasicModel(Number)("0")) expectType(new BasicModel(String)("")) expectType(Model(String)("test")) expectError(Model(String)(null)) expectType(BasicModel(Boolean)(true)) expectType(new Model(Boolean)(false)) expectError(new Model(Boolean)("")) expectType(BasicModel(/A-Z/)("TEST")) expectType<"optional" | undefined | null>(BasicModel(["optional"])(undefined)) expectType(new BasicModel([Number])(null)) expectType(new BasicModel([String])(null)) expectType<"one" | "two">(BasicModel(["one","two"])("one")) expectType(BasicModel([Number, String])(2)) expectType(new BasicModel([Boolean, null])(false)) expectType(new BasicModel(["never", Date])("never")) const M = new BasicModel(Date) const M2 = M.extend() expectType(M2(new Date())) const M3 = M2.extend(String) expectType(M3(new Date())) const N = BasicModel(Number).defaultTo(0) expectType<0>(N()) expectError(N("not a number"))