mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-02 08:35:07 +08:00
- Compile Three.js capsule, sphere, and ray collision queries for native and WebAssembly targets. - Preserve JavaScript constructor results, shared arrays, and nullable class fields. - Resolve static methods against their exact class receivers.
41 lines
1001 B
JavaScript
41 lines
1001 B
JavaScript
class Value {
|
|
constructor() { this.id = 7; }
|
|
}
|
|
|
|
class Base {
|
|
/** @param {Record<string, Value>} values */
|
|
load(values) { this.value = values.missing || null; }
|
|
}
|
|
|
|
class Derived extends Base {
|
|
constructor() {
|
|
super();
|
|
/** @type {?Value} */
|
|
this.value = null;
|
|
}
|
|
}
|
|
|
|
const base = new Base();
|
|
console.log('initial', base.value === undefined);
|
|
base.load({});
|
|
console.log('missing', base.value === null);
|
|
const value = new Value();
|
|
base.load({ missing: value });
|
|
console.log('present', base.value === value);
|
|
const derived = new Derived();
|
|
console.log('derived', derived.value === null);
|
|
derived.load({ missing: value });
|
|
console.log('identity', derived.value === value);
|
|
derived.load({});
|
|
console.log('reset', derived.value === null);
|
|
|
|
class Optional {
|
|
/** @param {Value} [value] */
|
|
constructor(value) {
|
|
/** @type {Value} */
|
|
this.value = value;
|
|
}
|
|
}
|
|
console.log('omitted', new Optional().value === undefined);
|
|
console.log('supplied', new Optional(value).value === value);
|