mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-20 05:40:17 +08:00
57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
function logical(values: string[], present: string): void {
|
|
let value = values[0];
|
|
if (!value) return;
|
|
const read = () => console.log((present && value)?.length);
|
|
value = values.slice(1)[0];
|
|
read();
|
|
}
|
|
|
|
function conditional(values: string[], present: boolean): void {
|
|
let value = values[0];
|
|
if (!value) return;
|
|
const read = () => console.log((present ? value : value)?.length);
|
|
value = values.slice(1)[0];
|
|
read();
|
|
}
|
|
|
|
function defaults(values: string[]): void {
|
|
let value = values[0];
|
|
if (!value) return;
|
|
const readOr = () => console.log((value || "fallback")?.length);
|
|
const readNullish = () => console.log((value ?? "fallback")?.length);
|
|
value = values.slice(1)[0];
|
|
readOr();
|
|
readNullish();
|
|
}
|
|
|
|
function condition(values: string[]): void {
|
|
let value = values[0];
|
|
if (!value) return;
|
|
const read = () => console.log((value ? "yes" : "no")?.length);
|
|
value = values.slice(1)[0];
|
|
read();
|
|
}
|
|
|
|
function multipleArms(values: (string | number)[]): void {
|
|
let value = values[0];
|
|
if (!value) return;
|
|
value = 1 as unknown as string;
|
|
const read = () => console.log(value.length);
|
|
read();
|
|
}
|
|
|
|
function commaCall(callbacks: (() => void)[], mark: () => void): void {
|
|
let callback = callbacks[0];
|
|
if (!callback) return;
|
|
const call = () => (mark(), callback)();
|
|
callback = callbacks.slice(1)[0];
|
|
call();
|
|
}
|
|
|
|
logical(["first"], "yes");
|
|
conditional(["first"], true);
|
|
defaults(["first"]);
|
|
condition(["first"]);
|
|
multipleArms(["first"]);
|
|
commaCall([() => {}], () => {});
|