// TypeScript语法高亮模式
CodeMirror.defineMode("typescript", function(config) {
    const jsMode = CodeMirror.getMode(config, "text/javascript");
    
    return {
        token: function(stream, state) {
            // TypeScript特有语法
            if (stream.match(/\b(interface|type|implements|enum|namespace)\b/)) {
                return "keyword";
            }
            
            // 类型注解
            if (stream.match(/:\s*[a-zA-Z_$][\w$]*(\.[a-zA-Z_$][\w$]*)*(\[\])?\s*/)) {
                return "type";
            }
            
            // 泛型
            if (stream.match(/<[a-zA-Z_$][\w$]*>/)) {
                return "operator";
            }
            
            // 默认JavaScript处理
            return jsMode.token(stream, state);
        }
    };
});

CodeMirror.defineMIME("text/typescript", "typescript");