Vue single file component and typescript

Webpack configuration, module.rules:

{
    test: /\.ts$/,
    include: projectRoot,
    exclude: /node_modules/,
    use: [
        {
            loader: 'ts-loader',
            options: {
                appendTsSuffixTo: [/\.vue$/],
            },
        },
    ],
},
{
    test: /\.tsx$/,
    include: projectRoot,
    exclude: /node_modules/,
    use: [
        _.babelLoader,
        {
            loader: 'ts-loader',
            options: {
                appendTsSuffixTo: [/\.vue$/],
            },
        },
    ],
},

Intellij Idea language injection for typescript block:

Example:

<template>
    <keep-alive>
        <router-view></router-view>
    </keep-alive>
</template>
<script lang="tsx" type="text/typescript">
    import {Component, Watch, Prop} from 'vue-property-decorator';
    import Vue from 'vue';
    @Component
    export default class TestScreen extends Vue {
        created() {
            this.$root.subapp = this;
        }
    }
</script>