javascript - Typescript: "as HTMLElement" türünü kullanırken beklenmeyen token
Typescript'e yeni geldim. forEach döngüsü içinde HTMLElement türünü kullanırken aşağıdaki hatayı alıyorum:
ERROR in ./app/javascript/mount.jsx
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: /Users/me/projects/mathllc/app/javascript/mount.jsx: Unexpected token, expected "," (7:34)
5 | const mountPoints = document.querySelectorAll('[data-react-component]')
6 | mountPoints.forEach((mountPoint) => {
> 7 | const dataset = (mountPoint as HTMLElement).dataset
| ^
8 | const componentName = dataset['reactComponent']
9 | const Component = components[componentName]
10 | if (Component) {
Bu eğitimi @Ryan Bigg tarafından hazırlanan şu kaynaktan takip ediyorum: https://egghead.io/blog/rails-graphql-typescript-react-apollo
Kodum burada:
import ReactDOM from 'react-dom'
export default function mount(components = {}) {
document.addEventListener('DOMContentLoaded', () => {
const mountPoints = document.querySelectorAll('[data-react-component]')
mountPoints.forEach((mountPoint) => {
const dataset = (mountPoint as HTMLElement).dataset
const componentName = dataset['reactComponent']
const Component = components[componentName]
if (Component) {
const props = JSON.parse(dataset['props'])
ReactDOM.render(<Component {...props} />, mountPoint)
} else {
console.log(
'WARNING: No component found for: ',
dataset.reactComponent,
components,
)
}
})
})
}
Her türlü yardım için teşekkürler!
Cevap #1
Hata mesajına bakılırsa - ERROR in ./app/javascript/mount.jsx) - .tsx dosyası kullanmıyorsunuz ve as anahtar kelimesi geçerli Javascript değildir, bu yüzden ya as HTMLElement kısmını kaldırmalısınız çünkü Javascript tiplerle ilgilenmez ya da dosya adını mount.tsx olarak değiştirin - eğer derleme zincirinizde Typescript derleyici kullanıyorsanız.