Expose

Expose 데코레이터는 대상 메소드를 Renderer 에서 사용할 수 있게 합니다.

ExposeInjectable 이 선언된 클래스의 메소드에 사용하여야 합니다.
src/app.ts
import { Injectable, Expose } from "#app";

@Injectable()
export class App {
  @Expose()
  foo() {
    return "bar";
  }
}
view/index.html
<script>
  const bar = app.foo();
  console.log(bar); // bar
</script>

InjectableExposeCamel case 규칙에 따라 Renderer 에 변수를 선언합니다.

이 규칙은 이름의 첫 글자는 소문자로 표기하되 각 단어의 첫 글자를 대문자로 표기합니다.

예를 들어 GameObject 라는 클래스를 사용한다고 하면 Renderer 에서는 gameObject 라는 이름으로 생성됩니다.


src/app.ts
import { Injectable, Expose } from "#app";

@Injectable({ as: "application" })
export class App {
  @Expose({ as: "getBar" })
  foo() {
    return "bar";
  }
}
view/index.html
<script>
  const bar = application.getBar();
  console.log(bar); // bar
</script>

Renderer 에서 사용할 메소드 이름을 수동으로 지정하려면 as 옵션을 사용하세요.