Я работаю в проекте javascript, использующем проверку jsdoc / typescript и испытываем проблемы с приведением типа, а затем использую свойство stati c.
Когда используя импортированный тип у меня есть следующая проблема:
// @ts-check -- foo.js
export default class Foo {
static bar() {}
}
// @ts-check -- bar.js
/** @typedef {import('./foo').default} Foo */
const HopefullyFoo = /** @type {unknown} */ ('Foo');
const foo = /** @type {typeof Foo} */ (HopefullyFoo);
foo.bar();
Вывод:
src/components/bar.js:7:31 - error TS2693: 'Foo' only refers to a type, but is being used as a value here.
7 const foo = /** @type {typeof Foo} */ (HopefullyFoo);
~~~
Если я помещаю все в один файл, это выглядит нормально:
// @ts-check
class Foo {
static bar() {}
}
const LikelyFoo = /** @type {unknown} */ ('Foo');
const foo = /** @type {typeof Foo} */ (LikelyFoo);
foo.bar();
// No errors
Если я не произвожу typeof, я получаю эту ошибку, поэтому я тоже не думаю, что это правильно.
// @ts-check
class Foo {
static bar() {
}
}
const LikelyFoo = Foo;
const foo = /** @type {Foo} */ (LikelyFoo);
foo.bar();
Вывод
src/components/foo.js:13:5 - error TS2576: Property 'bar' is a static member of type 'Foo'
13 foo.bar();
~~~
Возможно ли это?